软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 设计在线 > 媒体动画 > AS3 和 Flash 真实的3D下雪效果对比

AS3 和 Flash 真实的3D下雪效果对比

  我们献上一个自定义AS3 SnowDisplay类,这个类可以用来创建多种雪花动画效果。你可以添加雪花动画到你的图片或者把它放到一个对象的后面。你可以将你的图形放在两个SnowDisplay实例中间,创建一个神奇的实时视觉效果。雪花掉落动画的大小和雪花的属性都是通过参数可以很简单的参数操作来控制。点击这两个图片以在单独的窗口中打开对应的applet。

 

  下载两个范例的源文件:snow.zip

  关于效果

  在最近我们Flash and Math的组员Barbara和Dan的一次谈话中,我们讨论了创建雪花坠落的真实效果的困难。我们注意到,雪花的移动方式有点想在空气中的波动模式,不是一直都下坠的。尽管如此,这对简单制作雪花以独立的随机运动放在四周还是不够的,因为附近的雪花都是以相同的方法运行的。我们需要的是一些类似的矢量场,这个用来定义波动引发的加速度,波动可以根据雪花所在的位置加在每个粒子上。但是,这将会更加的复杂和效率低下。

  我们带来一个解决方案,使用Perlin噪音来决定雪花的加速度,我们使用视差效应来制作3D效果。我们将在此指导手册的下一页更详细的介绍此方法。

  如何自定义

  为了使雪花效果尽量能够简单的使用,我们创建了SnowDisplay类继承Sprite类。因此,一个SnowDisplay是一个可以添加到舞台的交互显示对象。你只需要简单的调用新关键字的构造器就可以创建一个雪花效果:

  var snow: SnowDisplay = new SnowDisplay (550,300);

  以上代码创建了一个宽550,高300的雪花显示。一旦添加到舞台,他将开始下雪。雪花效果可以通过在SnowDisplay后面放置一个bitmap(或者其他图形)放在你选择的图片前面。

  在第一个applet中,我们用一些单选按钮展示了这个下雪类的潜力,这些单选按钮允许你设置不同参数来观察效果。可以做更多的雪花效果;做些试验看看你喜欢什么样的效果。在第二个范例中,我们放置了两个SnowDisplay实例:一个是在对象之前,一个在之后。我们这样做是想达到一个在松树前面的雪花更大,在松树后面的雪花更小的效果。另外,两个实例都在窗口之后。

  这里的基本代码是根据Dan的一些粒子范例改编的。SnowDisplay类使用一个更基础的ParticleDisplay类,这个类和我们在之前的例子范例中使用的相同,但是这个是简化了的。很明显,我们做了一个重要的更改:我们早期范例使用粒子随着时间而演变(变得更大或者更小,改变颜色等等)。这个要求粒子在每帧上可以擦除和重画。这里,粒子根本不改变,只需要改变他们的位置。ParticleDisplay类可以用于在显示区域移动的不改变例子的其他应用。

  执行最优化

  在我们的测试中,我们注意到使用大量的雪花的时候,动作可以执行,但是在动画不是很平滑,特别是在Snow Leopard Macs 上的时候。为了在一个不同范围的不同系统中增加雪花动画的相像性,可以把参数设置一下以造成较少的雪花坠落。

  SnowDisplay的公开属性waitCount设置在新的雪花添加到显示之前等待多少帧,公开属性particlesToAddEachFrame 设置将要添加多少雪花。因此,一个更高的waitCount或者一个更低的particlesToAddEachFrame 将可以让更少的雪花坠落。你可以在SnowDisplay.fla(对应我们的第一个范例)文件中看这些属性的不同值的表现。同时,你也可以用3D效果的深度做试验。使用一个更打的深度将造成背后的粒子坠落更慢,这样他们将在显示中逗留更久。改变zBack和zRange属性(代码中的注释有解释)的值可以设置动画使用更小的深度。

  下一页我们将讨论详细的下雪

相关阅读
网友评论
栏目导航
推荐软件