Flash mouseChildren=false对我来说不太合适

Flash mouseChildren=false对我来说不太合适,flash,addeventlistener,addchild,Flash,Addeventlistener,Addchild,顺便说一句,新年快乐 我想将事件处理从容器和it子容器中分离出来。如您所见,我的源代码非常简单: package { import flash.display.Sprite; import flash.display.*; import flash.events.*; public class test extends Sprite{ public function test() { var container

顺便说一句,新年快乐

我想将事件处理从容器和it子容器中分离出来。如您所见,我的源代码非常简单:

    package  {
    import flash.display.Sprite;
    import flash.display.*;
    import flash.events.*;

    public class test extends Sprite{

        public function test() {
            var container:Sprite = new Sprite();  // my container
            container.graphics.beginFill(0, 1);  // whatever the color
            container.graphics.drawRect(0, 0, 100, 100); // origin at 0,0
            container.graphics.endFill();
            addChild(container);

            var decor:Sprite = new Sprite();  // and it child
            decor.graphics.beginFill(0, 1);  // whatever the color
            decor.graphics.drawRect(200, 200, 100, 100);  // origin at 200,200
            decor.graphics.endFill();
            container.addChild(decor);
            container.mouseChildren = false;
            container.addEventListener(MouseEvent.ROLL_OVER, onOver, false, 0, true);
        }
        private function onOver(e: MouseEvent):void {
            trace("ROLL trace");
        }
    }
}
当我滚动容器对象时,我得到了跟踪(对我来说是确定的)。 但是当我翻过装饰对象时,我也得到了痕迹(不是我想要的)。 我只希望容器由鼠标事件触发,而不是子容器。
那么,我的鼠标孩子怎么了=错。。。。?我不明白…

这个
decor
对象是
container
的成员,因此它与
container
中的任何其他内容一起被评估

mouseChildren=false
不是完全禁用鼠标事件的一种方法,而是为了降低复合显示对象内的复杂性:仍然会触发鼠标事件,但事件的
target
属性将不包含对鼠标实际滚动的子对象的引用,而只包含对设置该属性的父对象的引用


如果希望完全忽略
decor
,请使用
decor.mouseEnabled=false取而代之。

我尝试了mouseEnabled=false,但它也不起作用。 在另一个论坛上,一个家伙告诉我。 所以他的解决方案是使用容器,并创建两个子项:一个处理鼠标事件,另一个作为装饰


而且它工作得很好。

+1就这样。只是一些来自语言参考的@nouatzi的免费信息。始终检查AS3文档!他们有很多很棒的信息。