Фазер: прикрепите событие касания на Sprite

Я новичок в Phaser и прямо сейчас им с помощью фазера В. 2.0.7. Что я хочу сделать, так это заставить спрайт обрабатывать сенсорное событие.

как я могу добавить onTap к объекту спрайта?

Я знаю, что события касания с sprite_obj.events.onInputDown, но все же я использовал onInputUp либо потому, что, когда есть всплывающее / модальное (предупреждение) срабатывает после onInputDown, вам нужно нажать дважды после этого, чтобы заставить прослушиватель событий работать снова. (мой личный обходной путь для этой проблемы использование inInputUp.)

еще одна вещь, которую я пытался добавить onTap на моем объекте холста,canvas.input.onTap.add что, я думаю, не подходит для достижения моей цели. Да, теперь он может обрабатывать события касания, но проблема в том, что я хочу ограничить событие касания только изображением спрайта на холсте, а не всем холстом.

может кто-нибудь мне помочь. Спасибо.

2 ответов


сначала вам нужно включить спрайт для ввода:

sprite.inputEnabled = true;

затем вы можете прослушать любые события, которые Спрайт отправляет, когда он участвует во вводе, например:

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

...

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

обратный вызов отправляется 2 параметра: Спрайт и указатель, который вызвал событие ввода (как и в системе с несколькими входами, это может часто меняться)

указатель имеет множество свойств, к которым вы можете получить доступ, таких как время его размещения, история движения и т. д. Видеть the указатель docs для сведения.

У Спрайта есть много событий, но это связанные с вводом (это поднято непосредственно из исходного кода Фазера):

/**
* @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;

вы пробовали это? этот.вход.onDown.add (obj.метод,объект);