思路主要是:
1. 创建一个512*512,背景色白色的BitmapData作为粒子的容器
2. 创建一个256*256,背景色黑色的BitmapData,由perlinNoise方法生成影响速度的BitmapData,粒子根据这张位图相应位置的颜色,觉得它的速度:
p.vx +...
everyinch
11年前 (2013-12-22) 5032℃
0喜欢
虽然使用BitmapData来处理粒子可以有比较高的效率,但也有进一步优化的余地。一个最简单的BitmapData粒子类如下所示:
package com.particles{
public class BitmapParticle1{
public var x:Num...
everyinch
13年前 (2011-09-26) 3689℃
0喜欢
40000个BitmapData粒子的喷射动画很好地体现了BitmapData粒子在性能方面的优势,但视觉效果并不十分理想,能否使用BitmapData粒子实现更炫更复杂的视觉效果呢?下面就让我们模拟图片粒子化的动画效果。完成的效果是首先加载一张位图,单击鼠标后该位图粒子化并上升...
everyinch
13年前 (2011-09-24) 7689℃
0喜欢
基本的BitmapData粒子动画主要涉及下面的5部操作:
1) BitmapData.lock()
2) BitmapData.colorTransform(BitmapData.rect, colorTransform)
3) Particle2D.update()
4) b...
everyinch
13年前 (2011-09-24) 4342℃
1喜欢
使用Sprite来承载粒子有许多方便的地方,比如可以继承Sprite的x,y坐标以及alpha、scaleX和scaleY属性等,这样就对粒子的操纵比较简单,也可以实现很好的视觉效果,但在效率方面则有值得商榷的地方。我们知道ActionScript3.0的代码需要Flash Pl...
everyinch
13年前 (2011-09-24) 3256℃
1喜欢
利用ConvolutionFilter滤镜,处理一下摄像头中的视频。计算摄像头视频中每一帧图像的边缘,使图像边缘的颜色接近于白色,而其它部分颜色接近与黑色。对于雪花来讲,检测它运动部分的颜色,如果接近白色则使雪花停止运动并逐渐消失,否则就一直飘动。通过以上分析,就可以实现比较流行...
everyinch
13年前 (2011-09-18) 4576℃
2喜欢
模拟下雪效果是比较困难的任务,我们注意到,雪花的移动方式有些接近在空气中的波动模式,不是一直都下坠的。如果以独立的随机运动来制作下雪的效果是远远不够的,因为附近的雪花都是以相同的方式运动。本小节的示例代码试图使用鼠标的运动来模拟风,从而对雪花的运动产生影响。
示例文件snowFl...
everyinch
13年前 (2011-09-18) 3510℃
1喜欢
使用粒子来模拟烟雾的效果是比较常见而又吸引人的。想象一下大家平时见到的烟雾效果:速度是向上的,具有一定的加速度,且逐渐扩散并透明。再分析了烟雾的粒子属性之后,还要为其定义适当的外观,这里使用了Flash制作了一段动画。动画总共50帧,前10帧使灰色的图形元件逐渐放大到原先的105...
everyinch
13年前 (2011-09-18) 7030℃
1喜欢
注意到Particle.as中的spin属性,在update函数中每一帧将spin的值累加到rotation属性上,实现粒子本身的自旋转。
package{
import flash.display.Sprite;
import flash.events.Event;
...
everyinch
13年前 (2011-09-18) 3276℃
1喜欢
在Particle.as中实现了一个autoRotate属性,它根据每一帧运动的水平速度和垂直速度来计算相应的旋转。autoRate是一个布尔属性。
package{
import flash.display.Sprite;
import flash.events.Eve...
everyinch
13年前 (2011-09-18) 3208℃
1喜欢
为了实现粒子在视觉上消失的效果,通过设置Particle的fade属性为0~1之间的小数,使它的alpha逐渐降低,从而达到淡出粒子的目的。
package{
import flash.display.Sprite;
import flash.events.Event;
...
everyinch
13年前 (2011-09-18) 4563℃
1喜欢
除了可以改变粒子的运动速度之外,还可以改变它的大小,通过设置它的growX和growY属性就可以达到目的。
package{
import flash.display.Sprite;
import flash.events.Event;
[SWF(width=&q...
everyinch
13年前 (2011-09-18) 3091℃
1喜欢
只要设置Particle实例的friction属性就可以改变粒子的摩擦力,一般将其设置为0~1之间的小数,从而达到运动速度逐渐变慢的目的。下面举一个简单的示例,类文件名为ParticleFriction.as,源代码如下:
package{
import flash.displ...
everyinch
13年前 (2011-09-18) 3483℃
1喜欢
在ActionScript3.0中,所有代码都不是写在时间轴上的。那么它们一开始都要继承自 MovieClip或Sprite。MovieClip 类是影片剪辑对象属性和方法的ActionScript模板。它包括一些常用的属性:x, y坐标、缩放等等。ActionScript3.0...
everyinch
14年前 (2011-04-26) 3774℃
2喜欢
很多的现象都可以用粒子系统精确的或者近似的模拟,例如烟、雪、火焰、鱼群、星空等等。
一个粒子系统由拥有各种属性的对象组成,它们必须遵循一定的行为规范。具体的这些属性和行为规范取决于想要模拟的对象。一些粒子系统可能需要很多属性和复杂的规则,而有的则相对比较简单。
每个粒子都需要一些...
everyinch
14年前 (2011-04-26) 3134℃
2喜欢