Forked from: k__'s fluid diff:21 swirl (10000 particles) k__ forked:6favorite:30lines:111license : MIT License modified : 2009-06-01 03:53:15 Embed Tweet package { import flash.display.*; import flash.events.*; import flash.filters.*; import flash.geom.*; public class Main extends Sprite { private var mapHN:uint = 30,mapVN:uint = 30, sh:uint, sw:uint; private var tr:Number = 0.95, tg:Number = 0.95, tb:Number = 0.95; private var mapW:Number,mapH:Number; private var mX:Number,mY:Number; private var map:Array; private var particles:Array; private var numParticles:uint = 10000; private var canvas:BitmapData; public function Main() { sw = stage.stageWidth; sh = stage.stageHeight; graphics.beginFill(0xffffff); graphics.drawRect(0,0,sw,sh); graphics.endFill(); canvas = new BitmapData(sw,sh,true,0x00ffffff); addChild(new Bitmap(canvas)); var i:uint,j:uint; mapW = sw / mapHN; mapH = sw / mapVN; map = []; var m:Object; for (j = 0; j < mapVN; j ++) { map.push([]); for (i = 0; i < mapHN; i ++) { map[j].push(m = new Object); m.vx = Math.random() * 10- 5; m.vy = Math.random() * 10 - 5; } } var p:Particle; particles = []; for (i = 0; i < numParticles; i ++) { particles.push(p = new Particle(sw, sh)); } addEventListener(Event.ENTER_FRAME, h_enterFrame); } private function h_enterFrame(evt:Event):void { var i:uint,j:uint,k:int,l:int,cnt:uint,tvx:Number,tvy:Number; var p:Particle,m:Object; var temp:BitmapData = new BitmapData(sw,sh,true,0x00000000); for (i = 0; i < numParticles; i ++) { p = particles[i]; m = map[Math.floor(p.x / mapW)][Math.floor(p.y / mapH)]; p.vx = (p.vx +(m.vx - p.vx) / 10) * 0.99; p.vy = (p.vy + (m.vy - p.vy) / 10) * 0.99; p.x += p.vx; p.y+= p.vy; if (p.x < 0 || p.y < 0 || p.x >= sw || p.y >= sw || Math.random() < 0.01) { p.init(); } temp.setPixel32(p.x, p.y, 0xffffffff); } for (j = 0; j < mapVN; j ++) { for (i = 0; i < mapHN; i ++) { cnt = 30; tvx = map[i][j].vx * cnt; tvy = map[i][j].vy * cnt; for (k = -2; k <=2; k ++) { if (i + k < 0 || i + k >= map.length) { continue } for (l = -2; l <= 2; l ++) { if (j + l < 0 || j + l >= map[i + k].length) { continue } tvx += map[i + k][j + l].vx; tvy += map[i + k][j + l].vy; cnt ++; } } map[i][j].vx = tvx / cnt; map[i][j].vy = tvy / cnt; } } if (mX || mY) { m = map[Math.floor(mX / mapW)][Math.floor(mY / mapH)]; m.vx = (m.vx +(mouseX - mX) * 5) * 0.99; m.vy = (m.vy + (mouseY - mY) * 5) * 0.99; } mX = Math.max(0,Math.min(mouseX, sw - 1)); mY = Math.max(0,Math.min(mouseY, sh - 1)); var filter:BitmapFilter; if (Math.random() < 0.05) { tr = Math.random() / 5 + 0.85; tg = Math.random() / 5 + 0.85; tb = Math.random() / 5 + 0.85; } filter = new ColorMatrixFilter([tr,0,0,0,0, 0,tg,0,0,0, 0,0,tb,0,0, 0,0,0,0.96,0]); canvas.applyFilter(canvas,new Rectangle(0,0,sw,sh),new Point(),filter); filter= new BlurFilter(4,4); canvas.applyFilter(canvas,new Rectangle(0,0,sw,sh),new Point(),filter); canvas.draw(temp, new Matrix(), new ColorTransform(1,1,1,0.5,0,0,0,0),BlendMode.ADD); } } } class Particle { public var x:Number,y:Number, vx:Number, vy:Number, sw:uint, sh:uint; function Particle(w:uint, h:uint) { sw = w; sh = h; init(); } public function init():void { x = Math.random() * sw; y = Math.random() * sh; vx = vy = 0; } } Code Fullscreen Preview Fullscreen lexanderc metals_rattr.. Murai hacker_q4ift.. ibu4gin FlashFit yutaka eternity_hir.. chamadi fabure ikusu twelvetoes fallen coppieee hisasann matsumos yoshifuto enjoy_tpm tkinjo jttya chimanaco sw_lucchini yd_niku thinktaro : fluid Gen : particle cosaic : particle雲? xlune : particle HaraMakoto : 銀河! _sam : followparticle-atmoshper-mousewicked bkzen : 雲みたい fluid follow particle particle-atmoshper-mouse map filter Math.floor mouseY mouseX Math.max Math.min Object setPixel32 applyFilter Rectangle ColorMatrixFilter BlendMode.ADD drawRect addEventListener endFill beginFill draw push ColorTransform sort new page view favorite forked pv260 forked from: swirl (10000 part.. nickkeers forked:0 favorite:0lines:111 (diff:2) pv587 forked from: swirl (10000 part.. hacker_q4ift_ht forked:0 favorite:1lines:112 (diff:8) pv438 forked from: swirl (10000 part.. Luiz forked:1 favorite:0lines:134 (diff:49) pv853 forked from: swirl (10000 part.. fr34k forked:3 favorite:5lines:111 (diff:3) pv553 forked from: swirl (10000 part.. HaraMakoto forked:3 favorite:0lines:111 (diff:3) pv440 forked from: swirl (10000 part.. yd_niku forked:0 favorite:1lines:111 (diff:1)