如何在flash cs6中停止或删除addEventListener

时间:2015-11-17 14:53:26

标签: actionscript-3 flash

大家好我需要一些帮助,我是AS3的新手。 我有一个循环中有4个场景的flash项目,最后一个场景应用了雪花下降脚本。

我发现这个雪人脚本在我的项目中使用。效果很好,但我不知道如何将动画限制为它开始的特定场景。场景保持循环,雪不会停止。

它开始的场景会持续300帧,如果有帮助的话。

以下是代码:

addEventListener(Event.ENTER_FRAME, snow);
function snow(event: Event): void {
    var scale: Number = Math.random() * 0.6;
    var _sf: snowflake = new snowflake();
    _sf.x = Math.random() * 640;
    _sf.scaleX = scale;
    _sf.scaleY = scale;
    var speed: Number = Math.random() * 2;
    var RA: Array = new Array(-1, 1);
    var lf: int = RA[Math.round(Math.random())];
    stage.addChild(_sf);
    _sf.addEventListener(Event.ENTER_FRAME, snowfall);
    function snowfall(event: Event): void {
        _sf.y += speed;
        _sf.rotation += Math.random() * 20;
        _sf.x += (Math.random() * 2) * lf;
    }
}

非常感谢任何帮助。谢谢里克

3 个答案:

答案 0 :(得分:0)

我最终找到了一个更好的雪景动画剧本,在场景的持续时间内播放。

这里是 - 供参考。

import flash.events.Event;

var snowflakes:Array = new Array();
addEventListener(Event.ENTER_FRAME, loop);
function loop(e:Event) {
    for (var i=0; i<4; i++) {
        var scale: Number = Math.random() * 0.6;
        var s = new flake();
        s.x=Math.random()*550;
        s.scaleX = scale;
        s.scaleY = scale;
        s.y=-10;
        s.speedY=1+Math.random()*2;
        s.speedX=2-Math.random()*3;
        addChild(s);
        snowflakes.push(s);
    }
    for (i=snowflakes.length-1; i>0; i--) {
        snowflakes[i].y+=snowflakes[i].speedY;
        snowflakes[i].x+=snowflakes[i].speedX;
        if (snowflakes[i].y>600) {
            removeChild(snowflakes[i]);
            snowflakes.splice(i, 1);
        }
    }
}

然后我在场景的最后一帧添加了它,并且它有效。

removeEventListener(Event.ENTER_FRAME, loop);

答案 1 :(得分:0)

removeEventListener(Event.ENTER_FRAME,snow);

答案 2 :(得分:-1)

类似的东西:

removeEventListener(Event.ENTER_FRAME, snowfall);