0

我在不应该调用 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。没有什么可以代替舞台。

4

1 回答 1

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;
    }
}
于 2012-04-10T00:09:15.210 回答