ActionScript 3 .alpha属性不起作用

时间:2014-02-03 15:45:34

标签: actionscript-3 flash alpha tween

我有三个电影片段:'说明','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,就会发生同样的事情。知道为什么吗?

1 个答案:

答案 0 :(得分:1)

uelButtonHovered中,您在函数范围内声明tweenA,这与您在函数外声明的其他tweenA不同。在uelButtonOut中停止tweenA的调用不会在正确的补间上调用stop。在将uelHover设置为0后,补间将继续在uelHover上进行最新更新 - 有效地覆盖您的更改。