我有一些嵌套的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只是没有检测到任何类型的鼠标事件。
谢谢!
答案 0 :(得分:0)
一些想法......
首先检查以确保movieClipStack.mouseEnabled == true
,以确保您不会无意中禁用从鼠标到对象的消息。
然后,我会看一下hitArea
为movieClipStack
设置的trace( movieClipStack.hitArea );
width
。检查其height
和movieClipStack
值,看看它是否与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
希望这有帮助!我花了很多时间才发现了这个。