首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Stop MouseEvent-将displayList视图传播到starling视图

Stop MouseEvent-将displayList视图传播到starling视图
EN

Stack Overflow用户
提问于 2013-06-25 18:01:07
回答 1查看 425关注 0票数 3

我正在创建一个游戏,它使用starling层(游戏本身)和经典显示列表,其中包含几个弹出式窗口和类似的东西。

有一件事让我很困扰:如果MouseEvents是在displayList元素上生成的,它们总是会穿过starling层并生成TouchEvents等,这非常烦人。

我想知道是否有一些通用的(且易于使用的)方法来处理这个问题。

一种可能是监听所有displayList-Elements以获取以下事件:

代码语言:javascript
复制
interfaceElement.addEventListener(MouseEvent.MOUSE_MOVE, stopPropagationHandler);
interfaceElement.addEventListener(MouseEvent.MOUSE_DOWN, stopPropagationHandler);
interfaceElement.addEventListener(MouseEvent.MOUSE_UP, stopPropagationHandler);

private function stopPropagationHandler(e:MouseEvent):void {
    e.stopPropagation();
}

但对我来说这看起来很糟糕。即使我这样做了,我还有一个问题:如果starling-element在那个display-list-element下面,并且如果它有一个用于翻转行为>>的TouchEvent.TOUCH,那么如果您将鼠标悬停在display-list-element上,翻转外观将不会从starling中删除。

我还考虑在每个display-list-element后面放一个dummy-starling元素,...为了停止这些事件..但是,对于这样一个“简单”的任务来说,这一切听起来都有点“过于复杂”。还是我错过了什么?

如果您能给我一个提示,我们将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-25 18:29:23

您可以在显示列表(而不是舞台)中创建一个主容器,并侦听ROLL_OVER和ROLL_OUT,并在那里设置某种全局标志,表明您的鼠标位于显示列表容器上。然后在你的八哥活动中,检查一下这面旗帜。我想这不是最好的解决方案,但它应该可以工作

代码语言:javascript
复制
var isOverDisplayList:Boolean = false;
container.addEventListener(MouseEvent.ROLL_OVER, onRollOver);
container.addEventListener(MouseEvent.ROLL_OUT, onRollOut);

function onRollOver(e:MouseEvent) {
  isOverDisplayList = true;
}

function onRollOut(e:MouseEvent) {
  isOverDisplayList = false;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17294339

复制
相关文章

相似问题

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