【问题标题】:Issue with MOUSE_MOVE and MOUSE_OUT applied to stageMOUSE_MOVE 和 MOUSE_OUT 应用于舞台的问题
【发布时间】:2012-04-22 07:02:20
【问题描述】:

我遇到了 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。除了舞台,什么都没有。

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

    您想改用 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;
        }
    }
    

    【讨论】:

    • 太棒了,有帮助,非常感谢!好吧,替代方法不起作用,但这很好:)。唯一的问题是鼠标右键单击时也会发送 mouse_leave 事件,但这没什么大不了的。您能否也告诉我为什么 mouse_out 事件不能正常工作?我可能用错了,但我真的很想知道。
    猜你喜欢
    • 2011-01-01
    • 2023-04-08
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多