AS2淡化 - 透明到黑色

时间:2014-11-07 05:34:03

标签: flash actionscript actionscript-2

尝试淡出动作脚本2中的影片剪辑对象。

它似乎仅在影片剪辑关键帧从第1帧开始时起作用。如果在它之前有空帧,则它不起作用。如何更改代码,这不是问题?

function FadeOut(Clip:MovieClip, Velocidad:Number) {    
Clip.onEnterFrame = function () {
    if (Clip._alpha > 0) {
        Clip._alpha -= Velocidad;;
    } else {
        this.onEnterFrame = null;
        this.FadeOutEnd();
    }
}
}

FadeOut(outr, 5);

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我试着用一个例子来解释会发生什么。

我的root中有2个剪辑,第一个,clp1,我的第一个关键帧是第1帧,当我FadeOut(clp1, 5)时,这个效果非常好而且它需要20帧(100/5 = 20)或20次Clip.onEnterFrame次迭代,     对于我的第二个剪辑clp2,我的第一个关键帧是第20帧,所以在这里我没有看到任何内容,为什么?我们的FadeOut() function可以在20帧中完成所有工作,因此在clp2的第20帧,FadeOut()已经完成,所以     我们将clp2alpha = 100联系起来。所以,为了做你想做的事情,我们应该在onEnterFrameclp2.gotoAndStop(20)上进行,以查看所有(100%)褪色效果。当然,如果我们的第一个关键帧是5,例如,我们只会看到75%的衰落效果。

我希望我的解释清楚,并帮助你得到你想要的东西。

编辑:

我认为使用this.gotoAndStop(this._framesloaded)可以做你想做的事,尝试一下,然后告诉我你的想法。

function FadeOut(Clip:MovieClip, Velocidad:Number) { 

    Clip.onEnterFrame = function () {

        this.gotoAndStop(this._framesloaded)

        if (this._alpha > 0) {
            this._alpha -= Velocidad
        } else {
            delete this.onEnterFrame // it's the same as : this.onEnterFrame = null
            //this.FadeOutEnd()
        }
    }

}

FadeOut(clp_01, 5);