web-dev-qa-db-ja.com

Phaser:スプライトにタッチイベントをアタッチする

私はフェイザーに不慣れで、今はフェイザーv.2.0.7を使用しています。私がやりたいのは、スプライトにタッチイベントを処理させることです。

onTapをSpriteオブジェクトにアタッチするにはどうすればよいですか?

Sprite_obj.events.onInputDownでタッチイベントが発生する可能性があることはわかっていますが、onInputUpの後にポップアップ/モーダル(アラート)が発生した場合は、onInputDownを使用しました。その後、2回クリックして、イベントリスナーを再び機能させます。 (この問題の個人的な回避策はinInputUpを使用しています。)

私が試したもう1つのことは、キャンバスオブジェクトにonTapを追加することです。canvas.input.onTap.addは、私の目標を達成するのに適していないと思います。はい、タッチイベントを処理できるようになりましたが、問題は、タッチイベントをキャンバス全体ではなくキャンバス上のスプライト画像のみに制限したいということです。

誰かが私を助けることができますか?ありがとう。

11
Vainglory07

まず、入力に対してスプライトを有効にする必要があります。

Sprite.inputEnabled = true;

次に、次のように、Spriteが入力に関与しているときにディスパッチするイベントをリッスンできます。

Sprite.events.onInputDown.add(onDown, this);

...

function onDown(Sprite, pointer) {
 // do something wonderful here
}

コールバックには、入力イベントを引き起こしたスプライトとポインターの2つのパラメーターが送信されます(多入力システムの場合、これは頻繁に変わる可能性があります)

ポインタには、配置された時刻、移動履歴など、アクセスできる多くのプロパティがあります。詳細については、 ポインタドキュメント を参照してください。

スプライトには多くのイベントがありますが、これらは入力関連のイベントです(これはPhaserソースコードから直接削除されます)。

/**
* @property {Phaser.Signal} onInputOver - This signal is dispatched if the parent is inputEnabled and receives an over event from a Pointer.
* @default null
*/
this.onInputOver = null;

/**
* @property {Phaser.Signal} onInputOut - This signal is dispatched if the parent is inputEnabled and receives an out event from a Pointer.
* @default null
*/
this.onInputOut = null;

/**
* @property {Phaser.Signal} onInputDown - This signal is dispatched if the parent is inputEnabled and receives a down event from a Pointer.
* @default null
*/
this.onInputDown = null;

/**
* @property {Phaser.Signal} onInputUp - This signal is dispatched if the parent is inputEnabled and receives an up event from a Pointer.
* @default null
*/
this.onInputUp = null;

/**
* @property {Phaser.Signal} onDragStart - This signal is dispatched if the parent is inputEnabled and receives a drag start event from a Pointer.
* @default null
*/
this.onDragStart = null;

/**
* @property {Phaser.Signal} onDragStop - This signal is dispatched if the parent is inputEnabled and receives a drag stop event from a Pointer.
* @default null
*/
this.onDragStop = null;
24
PhotonStorm

これを試しましたか? this.input.onDown.add(obj.method、obj);

0
tomcask