2010-10-26 59 views
0

希望这里有个简短的问题。我已经设置了一个“LayoutPage”自定义类(基于MovieClip),我试图创建一个“选择”行为。关于儿童而不是父母的活动登记员

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

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

为此,我想将“addEventListener”从类中移出并放入父代(我的“PageLayout”类中所有的“LayoutPage”都在其中)。但是通过这样做,点击事件不再注册在“LayoutPage”类上,而是在其各个子项(页面图标,页码文本域,页面高亮形状等)上注册

任何人都可以解释为什么会发生这种情况以及我如何规避它?

TIA

回答

1

这应该发生无论身在何处,你把你的addEventListener。这是因为mouseChildren默认开启。这可能是最好把它关掉你的LayoutPage类中,像这样:

myLayoutPage.mouseChildren = false; 

实际的问题是,使用可能正在使用currentTarget当前引用被点击在事件处理方法的项目。看看currentTargettarget的描述,以便了解它们的不同之处。

一个很好的选择将是在页面布局级别添加监听器,而是专门将它添加到每个LayoutPage孩子,像这样:

myLayoutPage.addEventListener(MouseEvent.CLICK, toggleSelection); 

这样你可以在你的处理程序使用target 。但是最好仍然可以在每个实例上将mouseChildren切换为false。

+0

感谢一大堆! mouseChildren做的伎俩 – 2010-10-26 20:25:56