Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 子级而非父级上的事件注册器_Actionscript 3_Flash Cs5 - Fatal编程技术网

Actionscript 3 子级而非父级上的事件注册器

Actionscript 3 子级而非父级上的事件注册器,actionscript-3,flash-cs5,Actionscript 3,Flash Cs5,希望这里有一个简短的问题。我已经设置了一个“LayoutPage”自定义类(基于MovieClip),我正在尝试创建一个“selected”行为 当我从自定义类中指定“addEventListener(MouseEvent.CLICK,toggleSelection)”时,一切都按预期进行,单击该类的任何对象都会显示正确的行为 现在,我想通过添加键盘修改器来扩展该功能,以扩展选择或替换它 为此,我考虑将“addEventListener”从类中移出,并将其放在父类中(我的“PageLayout”

希望这里有一个简短的问题。我已经设置了一个“LayoutPage”自定义类(基于MovieClip),我正在尝试创建一个“selected”行为

当我从自定义类中指定“addEventListener(MouseEvent.CLICK,toggleSelection)”时,一切都按预期进行,单击该类的任何对象都会显示正确的行为

现在,我想通过添加键盘修改器来扩展该功能,以扩展选择或替换它

为此,我考虑将“addEventListener”从类中移出,并将其放在父类中(我的“PageLayout”类中所有“LayoutPage”都在其中)。但是通过这样做,单击事件不再注册在“LayoutPage”类上,而是注册在其各个子类(页面图标、页码文本字段、页面突出显示形状等)上

有人能解释为什么会发生这种情况,以及我如何规避这种情况吗


TIA

无论您将addEventListener放在何处,都应该发生这种情况。这是因为默认情况下已打开。最好在布局页面中关闭它,如下所示:

myLayoutPage.mouseChildren = false;
实际问题是use可能使用currentTarget引用事件处理程序方法中单击的项。请查看和的描述,了解它们之间的区别

一个好的选择是在页面布局级别添加您的侦听器,但将其专门添加到每个布局页面子级,如下所示:

myLayoutPage.addEventListener(MouseEvent.CLICK, toggleSelection);
这样,您就可以在处理程序中使用
target
。但最好还是在每个布局页面实例中将mouseChildren切换为false