Actionscript 3 mouseEnabled上有多个重叠项时忽略MouseInput=false
当我尝试单击的元素上有多个未启用mouseEnabled的元素时,我遇到了mouseEvents未被激发的问题 在我正在构建的游戏中,我有一个类似于棋盘游戏“风险”的棋盘。所以我有一个不规则形状的区域 我的视觉场景如下: 世界地图Actionscript 3 mouseEnabled上有多个重叠项时忽略MouseInput=false,actionscript-3,flash,actionscript,mouseevent,flash-cs6,Actionscript 3,Flash,Actionscript,Mouseevent,Flash Cs6,当我尝试单击的元素上有多个未启用mouseEnabled的元素时,我遇到了mouseEvents未被激发的问题 在我正在构建的游戏中,我有一个类似于棋盘游戏“风险”的棋盘。所以我有一个不规则形状的区域 我的视觉场景如下: 世界地图 -玩家拥有的领土集 --地域 ---区域图形 ---地域形态 因此,每个地区都有两个孩子,图形是一个带有PNG图形的MovieClip。此MovieClip同时设置为mouseEnabled和mouseChildren=false。这是因为作为位图,它是方形的,而不是
-玩家拥有的领土集
--地域
---区域图形
---地域形态 因此,每个地区都有两个孩子,图形是一个带有PNG图形的MovieClip。此MovieClip同时设置为mouseEnabled和mouseChildren=false。这是因为作为位图,它是方形的,而不是不规则的形状 以前我没有位图,我可以通过单击不同的形状简单地选择每个区域,但是现在我添加了位图作为附加子对象,每个区域都有一个明显的矩形边界框。在区域形状内单击时,将按预期选择区域。但是,当在形状外部但在边界框内部单击时,什么也不会发生,而不是单击PNG并进入另一个区域的基础形状,整个鼠标输入将被忽略 这就好像两个重叠的PNG,而不是鼠标启用是太多的闪存处理 这是一个已知的问题吗?我做错什么了吗?有解决办法吗 代码示例
public function Territory( a_TerritoryXML:XML )
{
var t_ClassReference:Class = Main.Instance.LibTerritories.applicationDomain.getDefinition( a_TerritoryXML.tname ) as Class;
m_TerritoryShape = new t_ClassReference();
m_TerritoryShape.x = a_TerritoryXML.xPos;
m_TerritoryShape.y = a_TerritoryXML.yPos;
m_TerritoryShape.mouseEnabled = true;
m_TerritoryShape.mouseChildren = true;
mouseEnabled = false;
mouseChildren = true;
t_ClassReference = Main.Instance.LibTerritories.applicationDomain.getDefinition( a_TerritoryXML.tname + "Graphic" ) as Class;
var t_TerritoryGraphic:MovieClip = new t_ClassReference();
t_TerritoryGraphic.x = a_TerritoryXML.xPos;
t_TerritoryGraphic.y = a_TerritoryXML.yPos;
t_TerritoryGraphic.mouseEnabled = false;
t_TerritoryGraphic.mouseChildren = false;
this.addChild( t_Graphic );
this.addChildAt( m_TerritoryGraphic, 0 );
}
有时
mouseEnabled=false
还不够,请尝试添加mouseChildren=false代码>共享您的实际源代码。它可以按照你想要的方式工作,所以这个问题很可能是你如何放置项目以及在哪里连接鼠标侦听器。尽管我很好奇为什么图形会层叠在形状的顶部根据形状,我假设它实际上不是一个shape
对象(它不能接收点击事件),而是一个精灵或MovieClip?“领土形状”是一个MovieClip,里面有手动绘制的(在Flash IDE中)向量形状。根据请求,我添加了一个代码示例。我希望这会有帮助。我在舞台上增加了一个MouseeEvent监听器。(我使用event.target来识别单击了哪个区域)我认为这比使用750个鼠标事件侦听器更可取。形状位于图形下方的原因是图形应该可见,而不是形状。如果我将形状设置为“不可见”,则无法再单击它。看起来解决方案就是这样。我忘记将“区域集”容器设置为mouseEnabled=false。因此,这一个是注册点击!