粒子动画as3分层

时间:2013-12-13 15:48:16

标签: actionscript-3 animation particle-system greensock

我已经通过几个教程来争取完美的粒子雪效果。我现在唯一需要做的就是复制粒子效果并在我的背景和前景之间播放第二个版本。原来我仍然希望保持最顶层。我尝试将代码包装在一个函数中,并使其中两个具有不同的名称,但我得到了一堆奇怪的错误。因此,我没有破坏我已经拥有的东西,而是来到这里询问有关情况的任何建议。这是我的代码。我正在使用Greensock动画库来处理我的时间轴和动画。

import com.greensock.*;
import com.greensock.easing.*;

addChildAt(MC_BG, 0)
addChildAt(MC_FG, 2)

var tl:TimelineMax=new TimelineMax({paused:false});

function createFlake(offset) {
//create a flake (attach symbol in library with Class flake) and position on stage
var flake:Flake = new Flake();
flake.y=-50;
flake.x=randomRange(-10,1090);
flake.alpha=0;


addChild(flake);
//create timeline for each flake
var nestedTl:TimelineMax = new TimelineMax();

//how much wiggling / zig zagging
var wiggle:Number=randomRange(15,35);
//zig or zag?
wiggle=Math.random() > .5?- wiggle:wiggle;
//how fast and big
var speed:Number=randomRange(5,15);
//fade and grow
nestedTl.insert(TweenMax.to(flake, .5, {alpha:randomRange(.5,1), scaleX:speed, scaleY:speed}));
//go down
nestedTl.insert(TweenMax.to(flake,speed, {y:800}));
//zig zag
nestedTl.insert(TweenMax.to(flake, speed*.15, {x:String(wiggle), repeat:Math.floor(randomRange(1,4)), yoyo:true, ease:Sine.easeInOut}));

tl.insert(nestedTl, offset);
}

//generate random num between a min and max value
function randomRange(min:Number, max:Number):Number {
return min + (Math.random() * (max - min));
}

function init() {
//create a bunch of flakes and add them to timeline
for (var count:Number = 0; count<10000; count++) {
    var offset = count * 0.075;
    createFlake(offset);
}
}

init();

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

答案很简单,我完全忽略了它。我制作了3个空白的电影剪辑,在每一个中我都放了一个稍微修改过的代码版本。然后我将每个影片剪辑放在我想要的图层之间,鲍勃是你的叔叔,它有效。