particle test deform forked:1favorite:4lines:84license : MIT License modified : 2010-02-07 09:15:01 Embed Tweet package { import flash.geom.Point; import flash.filters.BlurFilter; import flash.text.TextField; import flash.geom.Rectangle; import flash.geom.ColorTransform; import flash.events.Event; import flash.events.MouseEvent; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; [SWF(width = "465", height = "465", backgroundColor = "0xffffff", frameRate = "60")] public class FlashTest extends Sprite { private static const WIDTH:Number = 465; private static const HEIGHT:Number = 465; private static const PARTICLE_MAX:Number = 1500; private var tf:TextField; private var canvas:BitmapData; private var fxbmd:BitmapData; private var particles:Array; private var cTrs:ColorTransform; private var cTrs2:ColorTransform; private var blur:BlurFilter; private var rect:Rectangle; private var point:Point; private var testCounter:Number = 0; private var mx:Number; private var my:Number; public function FlashTest() { // write as3 code here.. cTrs = new ColorTransform(1, 1, 1, 0.9); cTrs2 = new ColorTransform(1, 1, 1, 0.95); blur = new BlurFilter(5, 5, 2); rect = new Rectangle(0, 0, WIDTH, HEIGHT); point = new Point(0, 0); canvas = new BitmapData(WIDTH, HEIGHT); addChild(new Bitmap(canvas)); fxbmd = new BitmapData(WIDTH, HEIGHT); addChild(new Bitmap(fxbmd)); tf = new TextField(); addChild(tf); particles = []; createParticle(); addEventListener(Event.ENTER_FRAME, _upDate); } private function createParticle():void { var invertNum:Number = int(Math.random()*2-1+1)-1; for(var i:int=0; i<PARTICLE_MAX; i++){ var p:Particle = new Particle(); p.x = Math.sin(i/180)*130 + WIDTH/2; p.y = Math.cos(i/180)*130 + HEIGHT/2; p.tx = (Math.sin(i/180)*Math.PI+Math.random()*2-1) * Math.random(); p.ty = (Math.cos(i/180)*Math.PI+Math.random()*2-1) * Math.random(); p.c = 0x0; particles.push(p); } } private function _upDate(e:Event):void { tf.text = "particles : "+particles.length; canvas.lock(); canvas.colorTransform(rect, cTrs); for(var i:int=0; i<particles.length; i++){ particles[i].x += particles[i].tx; particles[i].y += particles[i].ty; canvas.setPixel32(particles[i].x, particles[i].y, 0xff000000); if(particles[i].x > WIDTH || particles[i].x <0 || particles[i].y > HEIGHT || particles[i].y < 0) particles.splice(i, 1); } fxbmd.lock(); fxbmd.draw(canvas); fxbmd.colorTransform(rect, cTrs2); fxbmd.applyFilter(fxbmd, rect, point, blur); fxbmd.unlock(); canvas.unlock(); if(particles.length < PARTICLE_MAX/2) createParticle(); } } } class Particle { public var x:Number; public var y:Number; public var tx:Number; public var ty:Number; public var g:Number; public var c:Number; } Code Fullscreen Preview Fullscreen BeloitAve bradsedito : animation shi.mengqin : 粒子 casaval : animationParticle Particle animation ColorTransform addChild length BlurFilter splice addEventListener Math.cos MouseEvent.ENTER_FRAME Math.sin Math.PI TextField push text Math.random Array Sprite int Number sort new page view favorite forked pv433 forked from: particle test omine forked:2 favorite:0lines:83 (diff:2)