2009-02-17 34 views
4

我正在使用Canvas itemRenderer作为我用来显示图像的容器。请参阅下面的伪代码。如何在Flex Canvas上停止鼠标事件触发子元素

image = new Image(); 
image.source = [email protected]; 
this.addChild(image); 
this.addEventListener(MouseEvent.MOUSE_OVER, enlarge(image)); 
this.addEventListener(MouseEvent.MOUSE_OUT, shrink(image)); 

当我将鼠标悬停在画布上时,会调用放大功能。但是,只要将鼠标移动到图像或其他子元素上,就会触发MOUSE_OUT事件。

任何人都可以指向我的方向来禁用此行为?

谢谢:)

回答

16

您应该使用MouseEvent.ROLL_OVERMouseEvent.ROLL_OUT事件,而不是。

从Flash CS4文档:

当鼠标进入显示对象的区域或任何其子从一个对象的面积不是它的一个子中,显示对象调度rollOver事件。这与mouseOver事件的行为不同,即每当鼠标进入显示对象容器的任何子对象区域时调度该事件,即使鼠标已经在显示对象容器的另一个子对象上。

+0

谢谢,效果很好。但是,如果我打开组合框下拉菜单,它将激发'应用程序'ROLL_OUT ...任何想法? – jujule 2010-10-28 19:30:11

2

我同意乔希的观点,ROLL_OVER事件似乎更适合你正在做的事情。但是,您应该了解flash.display.DisplayObjectContainerUIComponent的祖先)的mouseChildren财产。

1

展示适用于我。 关于组合框问题: 您还可以检查事件的目标是否是容器中的孩子。

相关问题