我有三个电影片段:'说明','uelButton'和'uelHover'。动画开始时uelHover不可见(alpha为0)。当我将鼠标悬停在uelButton上时,我希望指示消失并且uelHover以便淡入。当我从uelButton上盘旋时,我希望uelHover消失并指示再次淡入。这是我的动作:
uelHover.alpha = 0;
uelButton.addEventListener(MouseEvent.MOUSE_OVER, uelButtonHovered);
uelButton.addEventListener(MouseEvent.MOUSE_OUT, uelButtonOut);
var tweenA:Tween;
function uelButtonHovered(evt:MouseEvent) { //hover over button
if (tweenA.isPlaying) {
tweenA.stop(); //stop tween if it is in the middle of a tween
}
instructions.alpha = 0; //remove instructions
var tweenA:Tween = new Tween(uelHover, "alpha", Regular.easeIn, 0, 1.0, 8, false); //make uelHover fade in
}
function uelButtonOut(evt:MouseEvent) {
if (tweenA && tweenA.isPlaying) {
tweenA.stop(); //if uelHover is still fading in, stop the tween so that we can make it's alpha property = 0 in the next line
}
uelHover.alpha = 0; //make uelHover disappear
instructions.alpha = 1; //make instructions appear
}
问题是,当我快速地将uelButton悬停在uelButton上时,当uelHover不在那里时,指令movieclip和uelHover movieclip都在屏幕上。如果我将鼠标悬停在上面,关闭然后真的快速地攻击uelButton,就会发生同样的事情。知道为什么吗?
答案 0 :(得分:1)
在uelButtonHovered
中,您在函数范围内声明tweenA
,这与您在函数外声明的其他tweenA不同。在uelButtonOut
中停止tweenA的调用不会在正确的补间上调用stop。在将uelHover设置为0后,补间将继续在uelHover上进行最新更新 - 有效地覆盖您的更改。