10

我是移相器的新手,现在我使用移相器 v.2.0.7。我想做的是让精灵处理触摸事件。

如何附加onTap到精灵对象?

我知道 touch 事件可以使用sprite_obj.events.onInputDown,但我仍然使用onInputUp其中任何一个,因为当在 之后触发 popup/modal(alert) 时onInputDown,您需要在此之后单击两次以使事件侦听器再次工作。(我个人针对此问题的解决方法是使用 inInputUp。)

我尝试过的另一件事是添加onTap到我的画布对象上,canvas.input.onTap.add我认为这不适合实现我的目标。是的,它现在可以处理触摸事件,但问题是我想将触摸事件仅限于画布上的精灵图像,而不是整个画布。

有人能帮我吗。谢谢。

4

2 回答 2

24

您首先需要启用 Sprite 进行输入:

sprite.inputEnabled = true;

然后,您可以监听 Sprite 在输入时调度的任何事件,例如:

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

...

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

回调发送 2 个参数:导致输入事件的 Sprite 和指针(在多输入系统中,这可能经常变化)

指针有很多你可以访问的属性,例如它被放下的时间、移动历史等。有关详细信息,请参阅指针文档

Sprite 有很多事件,但这些是与输入相关的事件(这是直接从 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;
于 2014-09-01T19:55:01.057 回答
0

你试过这个吗?this.input.onDown.add(obj.method,obj);

于 2014-09-01T14:56:22.437 回答