Phaser:在Sprite上附加Touch事件

Vai*_*y07 11 touch phaser-framework

我是phaser的新手,现在我正在使用phaser v.2.0.7.我想要做的是使sprite处理触摸事件.

如何附加onTap到精灵对象?

我知道触摸事件是可能的sprite_obj.events.onInputDown,但我仍然使用onInputUp,因为当有一个弹出/模态(警报)之后触发时onInputDown,你需要在此之后单击两次以使事件监听器再次工作.(我对此问题的个人解决方法是使用inInputUp.)

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

有人能帮我吗.谢谢.

Pho*_*orm 24

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

sprite.inputEnabled = true;

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

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

...

function onDown(sprite, pointer) {
 // do something wonderful here
}
Run Code Online (Sandbox Code Playgroud)

回调被发送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;
Run Code Online (Sandbox Code Playgroud)

  • 当然,焦点将恢复为您显示的DOM对象.但这并不意味着当你关闭它时你不能再将它设置回画布. (2认同)
  • 如果我不清楚,你可以在关闭你的模态之后做"game.canvas.focus()",将焦点重新设置回游戏. (2认同)