Flex中的正确方法是使透明面板响应rollOver()事件

时间:2008-11-15 01:00:39

标签: flex rollover

我在Flex应用程序中有一个Canvas,其中包含的项目仅覆盖主画布区域的约50%。

我希望画布响应整个区域的rollOver事件,而不仅仅是内部项目覆盖的区域。

我一直在设置以下属性来实现这一目标:

<mx:Canvas backgroundColor="white"
backgroundAlpha=".01"
rollOver="rollOver(event)">...

这会导致整个画布响应rollOver事件。它运作得很好 - 我对此并不满意,并认为必须有更好的方法来实现它。

有没有办法强制鼠标事件作用于UIComponent的整个区域?

3 个答案:

答案 0 :(得分:6)

你正在做的事情是完全可以接受的,虽然不需要使用0.01的任意alpha值,你可以将它的backgroundAlpha设置为一个简单的0。

我经常使用Canvases进行复杂的多层UI,并通过css设置我的默认Canvas样式,使backgroundAlpha为0,背景颜色为#ffffff,然后,如果我需要一个实际可见的画布我调整它的个人backgroundAlpha和backgroundColor属性。

将图形对象的alpha设置为0没有任何问题,因此它仍然可以响应事件但尚未完全“关闭”,我们AS编码员会一直这样做!

答案 1 :(得分:0)

如何忽略图像的透明度部分?在我的情况下,我希望只有在图像的可见部分被翻转而不是透明部分时才会发生翻转效果。这可能吗?

答案 2 :(得分:-2)

你可以这样做:



import flash.event.MouseEvent;
...
canvas.addEventListener(MouseEvent.ROLL_OVER,function(event:MouseEvent):void {
    ...
});

其中“canvas”是mxml中画布的ID。