我有一个主要的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);
}
}
}
我想在游戏中集中我的触点。我希望主触摸事件监听被触摸的内容,而不是在舞台上的所有电影片段上都有多个监听器。
例如,舞台上有一只叫鲍勃的狗,当我双击它时,它会调用上面的方法touchInteractionHandler()。
我知道如何获取movieclip对象并跟踪它:
trace(event.target);
[object 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);
这对我的游戏项目来说是一个真正的负担,一个解决方案会非常有帮助。
发布于 2013-10-27 23:35:18
这就是我如何解决在屏幕上有多个羽毛按钮(它们来自MovieClips,原理与普通的MovieClips相同)的问题,并且不希望每个按钮都有一个单独的侦听器。在创建对象时,每个对象都会向相同的事件侦听器发送请求。然后我有一个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 touch事件)?
https://stackoverflow.com/questions/19605121
复制相似问题