嵌套的movieClip未在Actionscript中检测鼠标事件

时间:2010-03-31 01:03:06

标签: actionscript-3 mouseevent movieclip

我有一些嵌套的movieClips。我在父母听到鼠标点击时有一个事件监听器。问题是,听众从不接受点击。

代码:

    var movieClipStack:MovieClip = new MovieClip();

    for each (var ol:OwnedLayerable in owned_layerables)
    {
        var mc:MovieClip = ol.layerable.mc;
        movieClipStack.buttonMode = true;
        movieClipStack.addChild(mc);
    }

    movieClipStack.addEventListener(MouseEvent.CLICK, onStackClicked);

    private function onStackClicked(evt:MouseEvent):void
    {
        // Do some stuff
    }

在movieClipStack上,我可以看到mouseEnabled = true。另外,buttonMode = true的工作原理与预期的完全相同。但onStackClicked永远不会发生 - movieClipStack只是没有检测到任何类型的鼠标事件。

谢谢!

2 个答案:

答案 0 :(得分:0)

一些想法......

首先检查以确保movieClipStack.mouseEnabled == true,以确保您不会无意中禁用从鼠标到对象的消息。

然后,我会看一下hitAreamovieClipStack设置的trace( movieClipStack.hitArea ); width。检查其heightmovieClipStack值,看看它是否与hitArea的宽度和高度大致相同。

然后我尝试创建一个简单的矩形精灵,并将其设置为movieClipStack的{​​{1}}。

我希望有效。祝你好运!

答案 1 :(得分:0)

您必须为鼠标监听动画片段的内容元素设置一个名为“mouseChildren”的鲜为人知的属性。

如果你不从事件流中删除那些其他元素,它们往往会以一种不那么可预测的方式消除事件。

所以,你会这样分配:

 parentMovieClip.mouseChildren = false;// turns off all internal mouse-listening clips

如果你把它放在MovieClip中,或者放在类定义中,我通常只是这样做:

 mouseChildren = false;

此外,这是一篇Adobe文章,解释了整个事情: http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObjectContainer.html

希望这有帮助!我花了很多时间才发现了这个。