大家好我需要一些帮助,我是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;
}
}
非常感谢任何帮助。谢谢里克
答案 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);