2012-04-09 23 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