mouseEnabled = false时有多个重叠项时忽略MouseInput

时间:2014-06-16 20:28:49

标签: actionscript-3 flash actionscript mouseevent flash-cs6

当我尝试点击的元素位于多个不是mouseEnabled的元素之上时,我遇到了没有触发mouseEvents的问题。

在我正在构建的游戏中,我有一个类似于棋盘游戏“风险”的棋盘。所以我的地域形状不规则。

我的视觉场景如下:

  

世界地图
   - 玩家拥有的领土集合   --Territory
  ---地域图形
  ---领土形状

因此每个地区都有两个孩子,图形是带有PNG图形的MovieClip。此MovieClip设置为mouseEnabled和mouseChildren = false。它必须是因为它是一个位图,它是正方形而不是不规则形状。

以前我没有位图,我可以通过点击不同的形状来简单地选择每个区域,但是现在我已经将位图添加为一个额外的子项,每个区域都有一个明显的矩形边界框。在区域内部单击时,按预期选择区域。但是当在形状外部单击时,但在边界框内部根本没有任何反应,而不是单击PNG并进入另一个区域的基础形状,将忽略整个鼠标输入。

就好像2个重叠的PNG没有启用鼠标太多,Flash无法处理?

这是一个已知问题吗?难道我做错了什么?有解决方法吗?

代码示例

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 );
}

1 个答案:

答案 0 :(得分:-1)

有时mouseEnabled=false;还不够,请尝试添加mouseChildren=false;