首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Starling框架集中了我游戏中的所有触摸事件

Starling框架集中了我游戏中的所有触摸事件
EN

Stack Overflow用户
提问于 2013-10-26 09:38:24
回答 1查看 554关注 0票数 0

我有一个主要的1级类,并加载图像,精灵和电影剪辑作为1级的孩子。

代码语言:javascript
运行
AI代码解释
复制
/**
 * @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对象并跟踪它:

代码语言:javascript
运行
AI代码解释
复制
trace(event.target);

[object MovieClip]

我似乎不知道如何识别电影剪辑的名称,因此我可以执行以下操作(伪)

代码语言:javascript
运行
AI代码解释
复制
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);

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

EN

回答 1

Stack Overflow用户

发布于 2013-10-27 23:35:18

这就是我如何解决在屏幕上有多个羽毛按钮(它们来自MovieClips,原理与普通的MovieClips相同)的问题,并且不希望每个按钮都有一个单独的侦听器。在创建对象时,每个对象都会向相同的事件侦听器发送请求。然后我有一个Vector,我在创建之后填充所有的按钮:

代码语言:javascript
运行
AI代码解释
复制
private var vBtns:Vector.<Button>;

在监听程序中,我有:

代码语言:javascript
运行
AI代码解释
复制
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事件)?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19605121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档