0

试图在 as2 的第 109 帧上停止此动画。任何帮助我需要做的广告才能停止这种情况。这是一个五彩纸屑动画。

cnfNumber = 85;
var cnfs:Array = new Array("cnf", "cnf2", "cnf3","cnf4","cnf5") 
for (i=0; i<cnfNumber; i++) {
    newCnf = _root[cnfs[random(cnfs.length)]].duplicateMovieClip("snow"+i, i);
    newCnf._x = Math.random()*Stage.width;
    newCnf._y = -Math.random()*300;
    newCnf.maxCnfSpeed = Math.random()*4;
    newCnf.wind = Math.random()*6;
    newCnf._xscale = newCnf._yscale = newCnf.alpha = Math.random()*65+35
    newCnf.onEnterFrame = function() {
        this._rotation -= this.maxCnfSpeed+1;
        if(this._y>Stage.height || this._x>Stage.width || this._x<0){
            this._y = -Math.random()*300;
            this._x = Math.random()*Stage.width;
        } else {
            this._y += this.maxCnfSpeed+2;
            this._x += this.wind-4;
        }

        this._alpha = this.alpha;
    };
}
4

1 回答 1

0

为什么不这样做:

newCnf._xscale = newCnf._yscale = newCnf.alpha = Math.random()*65+35
newCnf.frameCount = 0;
newCnf.onEnterFrame = function() {
    if(this.frameCount<109) {
        this._rotation -= this.maxCnfSpeed+1;
        if(this._y>Stage.height || this._x>Stage.width || this._x<0){
            this._y = -Math.random()*300;
            this._x = Math.random()*Stage.width;
        } else {
            this._y += this.maxCnfSpeed+2;
            this._x += this.wind-4;
        }
        this._alpha = this.alpha;
        this.frameCount++;
    } else {
        this.onEnterFrame = null;
    }
};

我有一段时间没有在 Actionscript 工作了,所以this.onEnterFrame = null可能不太正确,但不是绝对必要的;它只是防止五彩纸屑检查帧号并在动画完成后退出每一帧。

如果您希望五彩纸屑消失而不是冻结在原地,请卸下它而不是清除它onEnterFrame。我不记得在我脑海中执行此操作的函数,但文档duplicateMovieClip应该有指向它的链接。

(我不会问你为什么还在使用 AS2。)

于 2013-09-20T20:49:48.190 回答