写了一个FLASH粒子系统类,很烂很烂,不过灵活
用到了滤镜,实现拖尾
CUP貌似降不下来
使用这类效果还是小范围较好
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.BlurFilter;
import flash.filters.ConvolutionFilter;
import flash.geom.Point;
import flash.geom.Rectangle;
/**
* ...
* @author Emment
*/
public class test extends Sprite
{
private var particles:Array = new Array();
private var _bitmapD:BitmapData;
private var _bitmap:Bitmap;
private var _pNum:int = 110;
private var stageW:int;
private var stageH:int;
public function test()
{
stageW = stage.stageWidth;
stageH = stage.stageHeight;
_bitmapD = new BitmapData(stageW, stageH, false, 0);
_bitmap = new Bitmap(_bitmapD);
addChild(_bitmap);
for (var i:int = 0; i < _pNum;i++ ) {
makeParticle();
}
addEventListener(Event.ENTER_FRAME,enter);
}
private function makeParticle():void
{
var _particle:Particle;
_particle = new Particle(SparkCyan, this, Math.random() * stageW, Math.random() * stageH);
_particle.setScale(Math.random());
_particle.setVel(randRange(-5,5),randRange(-5,5));
_particle.directionRotate = true;
_particle.gravity = -0.1;
particles.push(_particle);
}
private function enter(e:Event):void
{
_bitmapD.lock();
for each(var p:Particle in particles) {
if (p.clip.x < 0 || p.clip.x > stageW || p.clip.y < 0 || p.clip.y > stageH) {
p.disable();
}
p.updateRotation();
p.update();
}
makeParticle();
if (particles.length > _pNum) {
var _particle:Particle = particles.shift();
_particle.disable();
_particle.destroy();
}
_bitmapD.draw(this);
_bitmapD.unlock();
_bitmapD.applyFilter(_bitmapD,_bitmapD.rect, new Point(0, 0), new BlurFilter(2,2,4));
}
function randRange(min:Number, max:Number)
{
var randomNum:Number = (Math.random() * (max - min )) + min;
return randomNum;
}
}
}
2009-1-31 20:28:45 回复该留言
能下载吗
2009-3-4 16:37:09 回复该留言
http://blog.zupko.info 原来大部分是来自这的
2009-3-4 16:52:34 回复该留言
还真那么点像,不过请看看日期哦,人家的是2月17号
我是1月份的。汗 。而且人家是3D里的粒子 我是平面滴
2010-4-19 17:24:51 回复该留言
emment 前辈你还有没有这个demo的源码啊
能不能给我一份啊!谢谢