Atomic Movement jopiruizen forked:0favorite:0lines:116license : MIT License modified : 2009-12-28 21:26:41 Embed Tweet package { import flash.display.Sprite; public class FlashTest extends Sprite { var w:*=470,h:*=470, asize:*=3, sp:*=5; //Time Related variables var tOut:*=20, tCtr:*=0, tMain:*=1000, tChng:*=2000, tCreate:*=1000; //Elements Related Variables var ptbl:Array=[{sym:"H",clr:0xEEEEEE} , {sym:"He",clr:0xE9F479}, {sym:"Li",clr:0xFCFDE8}, {sym:"Be",clr:0x45DC72}, {sym:"B",clr:0xAF2EA3}, {sym:"C",clr:0xC7320E}, {sym:"N",clr:0xA4DDF4}, {sym:"O",clr:0x285EAC}]; var atoms:Array; var area:Sprite; public function FlashTest(){loaderInfo.addEventListener("complete", init);} function init( e:Object ){ atoms = new Array(); loaderInfo.removeEventListener("complete",init); area= new Sprite(); addChild(area); df(area,0,0,{w:w,h:h,s:"r"}); df(this,0,1,{w:w,h:h,s:"r"}); addEventListener("enterFrame", ef); } function ri(i) { return Math.floor( Math.random() * i); } function cl(o) { var c = {}; for( var i in o ) { c[i] = o[i];} return c; } function ce () { var anum = ri(7); var o = cl( ptbl[anum] ); o.num = anum + 1; o.dSize = asize * o.num; o.cFlag = true; o.atom = new Sprite(); o.atom.name = "atom"; o.main = new Sprite() ; o.main.name = o.sym + "_" + atoms.length; o.main.addChild ( o.atom ); o.main.x = ri(470 - ( o.dSize / 2 )) ; o.main.y = ri(470 - ( o.dSize / 2 )) ; o.atom.scaleX = 0; o.atom.scaleY = 0; df(o.atom,o.clr,0.9,{s:"c",w:o.dSize}); return o; } function df(t:*, c:*,a:*,o:* ) { t.graphics.beginFill(c,a); if( o.s == "c") { t.graphics.drawEllipse(0 -( o.w / 2) ,0 -( o.w / 2),o.w,o.w); } else if( o.s == "r" ){ t.graphics.drawRect(0,0,o.w,o.h); } t.graphics.endFill(); } function mod(dvn:*,dvsr:*){return((dvn%dvsr)== 0);} function ef(e:Object){ if( mod(tCtr,tCreate) ) { var newE = ce(); atoms.push( newE ) ; area.addChild( newE.main ) ; } eAct(); tCtr += tOut; if( tCtr >= 50000) tCtr = 0; } function trd( n ) { return Math.PI*n/180; } function tdg (n ) { return n*180/Math.PI; } function imd ( o:* ) { var r = trd( ri( 360 )) ; o.vx=Math.cos(r)*(sp/o.num); o.vy=Math.sin(r)*(sp/o.num); } function eAct(){ //trace("I: "+ atoms.length ); for( var i:int = 0 ;i < atoms.length ;i++ ) { var o:Object = atoms[i]; if( o.move == true ) { o.main.x+=o.vx; o.main.y+=o.vy; if((o.main.x+o.dSize/2)>=w ||(o.main.x-o.dSize/2)<=0) { o.vx=o.vx*-1; if(o.vx<=0)o.main.x=0+o.dSize/2; if(o.vx>=w)o.main.x=w-o.dSize/2; } else if((o.main.y+o.dSize/2)>=h||(o.main.y-o.dSize/2)<=0){ if(o.vy<=0)o.main.y=0+o.dSize/2; if(o.vy>=h)o.main.y=h-o.dSize/2; o.vy=o.vy*-1; } } if( o.cFlag ) { //initialize if(o.atom.scaleX<1) { o.atom.scaleX = o.atom.scaleX + 0.05; o.atom.scaleY = o.atom.scaleY + 0.05; } else { o.atom.scaleX = 1; o.atom.scaleY = 1; delete o["cFlag"]; o.move = true; imd(o); } } } } } } Code Fullscreen Preview Fullscreen - Atomic Jopiruizen Movement phlashers2009 scaleX scaleY Object removeEventListener name length Math.PI Math.floor addEventListener push Math.cos addChild Math.sin Array Math.random int Sprite