Phaser: Прикрепите Touch Event на Sprite

Я новичок в phaser и прямо сейчас Im, используя phaser v.2.0.7. Я хочу сделать, чтобы спрайт-дескриптор касался события.

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

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

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

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

Ответ 1

Сначала вам нужно включить Sprite для ввода:

sprite.inputEnabled = true;

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

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

...

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

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

У Указателя есть много свойств, к которым вы можете получить доступ, например, время его размещения, историю движения и т.д. См. Документы указателя для деталей.

В Sprite есть много событий, но это связанные с Input (они сняты непосредственно из исходного кода 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;

Ответ 2

Вы пробовали это? this.input.onDown.add(obj.method, OBJ);