我有一个主要的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);
这对我的游戏项目来说是一个真正的负担,解决方案会非常有用
答案 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触摸事件)?