/**
* Copyright jopiruizen ( http://wonderfl.net/user/jopiruizen )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/dGaV
*/
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);
}
}
}
}
}
}