应用于舞台的MOUSE_MOVE和MOUSE_OUT问题

时间:2012-04-09 23:24:16

标签: actionscript-3

我遇到了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;
    }
 }

Flash不会抛出任何错误。我使用单独的.as文件(只有一个)并且在.fla中的操作面板中没有代码。 哪里有stage.addEventListener,我也试过这个。,root。什么也没有,而不是舞台。

1 个答案:

答案 0 :(得分: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;
    }
}