Actionscript 3 子级而非父级上的事件注册器
希望这里有一个简短的问题。我已经设置了一个“LayoutPage”自定义类(基于MovieClip),我正在尝试创建一个“selected”行为 当我从自定义类中指定“addEventListener(MouseEvent.CLICK,toggleSelection)”时,一切都按预期进行,单击该类的任何对象都会显示正确的行为 现在,我想通过添加键盘修改器来扩展该功能,以扩展选择或替换它 为此,我考虑将“addEventListener”从类中移出,并将其放在父类中(我的“PageLayout”类中所有“LayoutPage”都在其中)。但是通过这样做,单击事件不再注册在“LayoutPage”类上,而是注册在其各个子类(页面图标、页码文本字段、页面突出显示形状等)上 有人能解释为什么会发生这种情况,以及我如何规避这种情况吗Actionscript 3 子级而非父级上的事件注册器,actionscript-3,flash-cs5,Actionscript 3,Flash Cs5,希望这里有一个简短的问题。我已经设置了一个“LayoutPage”自定义类(基于MovieClip),我正在尝试创建一个“selected”行为 当我从自定义类中指定“addEventListener(MouseEvent.CLICK,toggleSelection)”时,一切都按预期进行,单击该类的任何对象都会显示正确的行为 现在,我想通过添加键盘修改器来扩展该功能,以扩展选择或替换它 为此,我考虑将“addEventListener”从类中移出,并将其放在父类中(我的“PageLayout”
TIA无论您将addEventListener放在何处,都应该发生这种情况。这是因为默认情况下已打开。最好在布局页面中关闭它,如下所示:
myLayoutPage.mouseChildren = false;
实际问题是use可能使用currentTarget引用事件处理程序方法中单击的项。请查看和的描述,了解它们之间的区别
一个好的选择是在页面布局级别添加您的侦听器,但将其专门添加到每个布局页面子级,如下所示:
myLayoutPage.addEventListener(MouseEvent.CLICK, toggleSelection);
这样,您就可以在处理程序中使用target
。但最好还是在每个布局页面实例中将mouseChildren切换为false