我遇到了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。什么也没有,而不是舞台。
答案 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;
}
}