私はフェイザーに不慣れで、今はフェイザーv.2.0.7を使用しています。私がやりたいのは、スプライトにタッチイベントを処理させることです。
onTap
をSpriteオブジェクトにアタッチするにはどうすればよいですか?
Sprite_obj.events.onInputDown
でタッチイベントが発生する可能性があることはわかっていますが、onInputUp
の後にポップアップ/モーダル(アラート)が発生した場合は、onInputDown
を使用しました。その後、2回クリックして、イベントリスナーを再び機能させます。 (この問題の個人的な回避策はinInputUpを使用しています。)
私が試したもう1つのことは、キャンバスオブジェクトにonTap
を追加することです。canvas.input.onTap.add
は、私の目標を達成するのに適していないと思います。はい、タッチイベントを処理できるようになりましたが、問題は、タッチイベントをキャンバス全体ではなくキャンバス上のスプライト画像のみに制限したいということです。
誰かが私を助けることができますか?ありがとう。
まず、入力に対してスプライトを有効にする必要があります。
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;
これを試しましたか? this.input.onDown.add(obj.method、obj);