2012-04-09 60 views
0

我遇到MOUSE_OUT被调用的问题,而不应该被调用。我所做的很简单:当我将鼠标移动到舞台上时,以及当鼠标离开舞台时,会显示两个图像。MOUSE_MOVE和MOUSE_OUT问题适用于阶段

问题是,只要鼠标碰到舞台上任何动画片段的边界,MOUSE_OUT函数就会被调用,隐藏两个图像。这意味着只要我移动鼠标

我的代码(只有相关部分所示):

public class Slider extends MovieClip { 
    var img1:Img1 = new Img1; 
    var img2:Img2 = new Img2; 
    var img1_hover:Img1_hover = new Img1_hover; 
    var img2_hover:Img2_hover = new Img2_hover; 

    public function Slider() { 
     img1.alpha = 0; 
     img2.alpha = 0; 

     stage.addEventListener(MouseEvent.MOUSE_MOVE, showArrows); 
    } 
    function showArrows(e:MouseEvent) { 
     img1.alpha = 1; 
     img2.alpha = 1; 

     stage.addEventListener(MouseEvent.MOUSE_OUT, hideArrows); 
    } 
    function hideArrows(e:MouseEvent) { 
     img1.alpha = 0; 
     img2.alpha = 0; 
    } 
} 

闪光灯不引发错误。我正在使用单独的.as文件(只有一个),并且在.fla中的操作面板中没有代码。 哪里有stage.addEventListener,我也试过这个,root。而不是阶段。

回答

2

您要使用的MOUSE_LEAVE事件,而不是http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Stage.html#event:mouseLeave

另外,在hideArrows功能,您可以检查事件的目标:

function hideArrows(e:MouseEvent) { 
    If(e.target == stage){ 
     img1.alpha = 0; 
     img2.alpha = 0; 
    } 
} 
+0

太棒了,那帮助,谢谢你啊!那么替代方法不起作用,但这是相当好的:)。唯一的问题是,鼠标右键事件也会在右键单击时发送,但这并不是什么大事。你可能也会告诉我_why_ mouse_out事件不能正常工作吗?我可能错用了它,但我真的很想知道。 – poepje 2012-04-10 08:58:06