触摸游戏对象中的事件

时间:2013-11-27 22:19:39

标签: actionscript-3 events starling-framework

在我的Starling游戏中,通过单击要移动的屏幕来控制玩家精灵。由于(AFAIK)你不能在精灵中发生外面一个精灵激活处理程序的触摸事件,我把处理程序放在游戏对象中。以下是它的基本概念:

要创建我的监听器,我在我的游戏对象中执行此操作:

this.addEventListener(TouchEvent.TOUCH, onTouch);

但onTouch永远不会被调用(我甚至尝试在其中放置trace()。)

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

好吧,你可以在sprite之外创建事件来触发sprite的处理程序,为此,你不要将监听器附加到sprite,而是附加到其他一些对象,通常是stage。但是,请检查舞台是否可用。处理舞台呈现的最佳方式是ADDED_TO_STAGE事件的倾听者。您将它放入您的处理程序对象的构造函数中,并将所有支持阶段的代码放入该侦听器。

public function Handler() {
    if (stage) init(null); 
        else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event):void {
    removeEventListener(Event.ADDED_TO_STAGE, init);
    // entry point. This is where should stage-aware code start
    stage.addEventListener(TouchEvent.TOUCH, onTouch);
    // at this point stage is populated and valid, thus we can use stage reference
    // without fear of null pointer.
}