Фазер: прикрепите событие касания на 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;