所有儿童禁用,只有一只活跃的小鼠

时间:2011-03-17 22:41:44

标签: actionscript-3 click mouseevent children

我有一个Movieclip(实例:my_mc),它包含Sprite,Bitmap,Texfield和Button(children)

Movieclip(my_mc)有一些我希望通过e.target

从我的活动中访问的变量
my_mc.addEventListener(MouseEvent.CLICK, my_fc);
function my_fc(e:MouseEvent):void{
    ...
}

所以当有人点击my_mc的子对象时,只有my_mc实际上会收到CLICK

出于此目的,我使用了my_mc.mouseChildren = false;

但我还需要按钮仍处于活动状态,以便只有当有人点击它时才会收到CLICK的孩子。我试图添加button.mouseEnabled = true;,但这不起作用......

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

如果按钮位于my_mc内,则需要使用my_mc.button.mouseEnabled = true;

并确保为my_mc.button提供事件监听器:my_mc.button.addEventListener(MouseEvent.CLICK, buttonHandler);

还有一个buttonHandler函数。

如果它仍然不起作用......

将按钮分隔成不同的动画片段并将它们定位到您想要的位置。然后只需在原始动画片段上使用my_mc.mouseChildren = false;,而不是在按钮上使用。

答案 1 :(得分:1)

cauko,skus toto ....

这假设您的按钮被称为btn,如果还有更多,您可能需要动态分配第二个侦听器。您无法使用my_mc.mouseChildren = false;,因为这会删除所有鼠标事件。

my_mc.addEventListener(MouseEvent.CLICK, my_fc);
function my_fc(e:MouseEvent):void{
    doSomething(e.target as MovieClip)
}
my_mc.btn.addEventListener(MouseEvent.CLICK, my_fc2);
function my_fc2(e:MouseEvent):void{
    e.stopImmediatePropagation();
    doSomething(e.target.parent);
}
function doSomething(mc:MovieClip):void{
    trace(mc);
}