【问题标题】:Particle Animation as3 Layering粒子动画 as3 分层
【发布时间】:2013-12-13 15:48:15
【问题描述】:

我已经通过几个教程进行了斗争,以提出完美的粒子雪效果。我现在唯一需要做的就是复制粒子效果并在我的背景和前景之间播放第二个版本。我仍然想保留原件作为最顶层。我尝试将代码包装在一个函数中并用不同的名称制作其中两个,但我得到了一堆奇怪的错误。因此,我没有破坏我已经拥有的东西,而是来这里寻求有关情况的任何建议。这是我的代码。我正在使用 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();

任何帮助将不胜感激。

【问题讨论】:

  • 为什么要使用这么多时间线?您基本上是为雪花效果创建 10001 个时间线和 30k 补间。你最好使用一个薄片数组,通过一个循环处理它们的摆动/旋转/下降(使用薄片的属性来存储临时数据)并每帧创建几个薄片,这样你最终会得到常量雪。然后创建两个下雪的 MC 实例并玩得开心。运行所有这些的代码对我目前的大脑状态来说有点大,但它只包含未包装的补间插值代码。
  • 嗯,我这样做的原因是雪花的变化最大。我尝试使用数组和程序代码,但雪总是以图案的形式出现。我从不满意它是如何跌落的。此外,缓动正弦函数要么不起作用,要么会呈指数增长。
  • 使用 flakes 的局部参数作为所涉及的每个补间的“from”、“to”、“current”和“phase”值,用想要的随机数进行初始化,每帧相应地改变,雪不应再有图案。

标签: actionscript-3 animation particle-system gsap


【解决方案1】:

答案很简单,我完全忽略了它。我制作了 3 个空白电影剪辑,并在每个剪辑中添加了此代码的略微修改版本。然后我将每个电影剪辑放在我想要的层之间,而 Bob 是你的叔叔,它起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    相关资源
    最近更新 更多