Starling Framework集中我游戏的所有触摸事件

时间:2013-10-26 09:38:24

标签: android actionscript-3 touch movieclip starling-framework

我有一个主要的1级课程和大量1级孩子的图片,精灵和动画片段。

/**
 * @desc This handles any touch event interactions in the level
 * @param   event
 */

private function touchInteractionHandler(event:TouchEvent):void {

    //register event listeners for touches
    var touchBegan:Touch = event.getTouch(this, TouchPhase.BEGAN);
    var touchEnded:Touch = event.getTouch(this, TouchPhase.ENDED);
    var touchHover:Touch = event.getTouch(this, TouchPhase.HOVER);

    //listen for touches that have just ended
    if (touchEnded) {

        if ( touchEnded.tapCount == 2 ) {

            //get object touched
            var object = event.target;

            //check if player is in walking range. if so then walk to that position of touch.globalx and y
            playerWalkCheck(touchEnded.globalX, touchEnded.globalY);
        }

    }
}

我希望将我的触动集中在游戏中。我没有在舞台上的所有动画片段上拥有多个听众,而是希望主要的触摸事件能够倾听所触摸的内容。

e.g。舞台上有一只叫Bob的狗,当我双击他时会调用上面的方法touchInteractionHandler()。

我知道如何获取movieclip对象并将其追踪出来:

trace(event.target);

[object MovieClip]

我似乎无法知道如何识别movieclip的名称,以便我可以执行以下操作(伪)

if movieclip is bob ->
   //do something with bob
else if movieclip is charlie ->
  //do something wit charlie
else ->
  make player walk to a position e.g. playerWalkCheck(touchEnded.globalX, touchEnded.globalY);

这对我的游戏项目来说是一个真正的负担,解决方案会非常有用

1 个答案:

答案 0 :(得分:0)

以下是我在屏幕上拥有多个Feathers Buttons(它们来自MovieClip,原理与普通MovieClip的原理相同)的问题,并且不希望每个都有一个单独的监听器。创建对象时,每个对象都会向同一个事件侦听器发送触摸。然后我有一个Vector,我在创建后填充所有按钮:

private var vBtns:Vector.<Button>;

在听众中我有:

private function onBtnTouch(e:starling.events.Event):void
{
    var idxButton:int=vBtns.indexOf(e.currentTarget);
    doSomething(idxButton);//or vBtns[idxButton].something()
}

可以轻松扩展相同的系统以处理分派Touch事件的其他类型的对象。

根据我的理解,你尝试了类似的东西但它没有用。您是否使用了正确的事件类型(starling.events.Event,而不是旧的Flash触摸事件)?