加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash – mouseChildren = false对我来说效果不好

发布时间:2020-12-15 07:24:07 所属栏目:百科 来源:网络整理
导读:新年快乐顺便说一句! 我想将事件处理与容器及其子容器分开.如您所见,我的源代码非常简单: package { import flash.display.Sprite; import flash.display.*; import flash.events.*; public class test extends Sprite{ public function test() { var cont
新年快乐顺便说一句!

我想将事件处理与容器及其子容器分开.如您所见,我的源代码非常简单:

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,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);  // origin at 200,200
            decor.graphics.endFill();
            container.addChild(decor);
            container.mouseChildren = false;
            container.addEventListener(MouseEvent.ROLL_OVER,onOver,false,true);
        }
        private function onOver(e: MouseEvent):void {
            trace("ROLL trace");
        }
    }
}

当我滚动容器对象时,我已经得到了跟踪(对我而言).
但是当我翻过装饰物时,我也得到了痕迹(不是我想要的).
我只是希望容器由鼠标事件触发,而不是孩子.
那么我的mouseChildren = false发生了什么?我不明白……

解决方法

装饰对象是容器的成员,因此它与容器内的任何其他内容一起进行评估.

mouseChildren = false;不是完全禁用鼠标事件的方法,而是为了降低复合显示对象内的复杂性:鼠标事件仍然被触发,但事件的目标属性不包含对鼠标实际翻转的子对象的引用,而只包含已设置该属性的父级.

如果要完全忽略decorto,请使用decor.mouseEnabled = false;而是.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读