forked from: forked from: forked from: forked from: forked from: flash on 2010-1-11

by Tamanegi_kenshi forked from forked from: forked from: forked from: forked from: flash on 2010-1-11 (diff: 72)
♥0 | Line 114 | Modified 2010-03-28 06:37:50 | MIT License
play

ActionScript3 source code

/**
 * Copyright Tamanegi_kenshi ( http://wonderfl.net/user/Tamanegi_kenshi )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/oXcY
 */

// forked from Tamanegi_kenshi's forked from: forked from: forked from: forked from: flash on 2010-1-11
package {
	import flash.events.MouseEvent;
	import flash.accessibility.Accessibility;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
   
   [SWF(backgroundColor=0x000000)]
   
   
   public class test extends Sprite{
   	
   	private var maru:BALL;
   	private var ball:BALL;
   	private var ballNum:uint=150;
   	private var fl:int=250;
   	private var stX:Number=stage.stageWidth/2;
   	private var stY:Number=stage.stageHeight/2;
   	private var top:Number=-stY+20;
   	private var bottom:Number=stY-20;
   	private var left:Number=-stX+20;
   	private var right:Number=stX-20;
   	private var front:Number=250;
   	private var back:Number=-250;
   	private var balls:Array;
   	
   	private var bounce:Number=-0.6;
   	private var gravity:Number=0.2;
   	private var floor:Number=200;
   	
   	
   	
   	public function test(){
   		init();
   		}
   		
   		private function init():void{
   			stage.addEventListener(MouseEvent.CLICK,onclick);
   			}
   			
   			private function onclick(e:MouseEvent):void{
   				maru=new BALL(1,0xffffff);
   				addChild(maru);
   				maru.x=stX;
   				maru.y=stY+stY;
   				
   				
   				addEventListener(Event.ENTER_FRAME,on);
   
      				}
      				
      				private function on(e:Event):void{
      					maru.y-=5;
      					if(maru.y<stY-100){
      						maru.visible=false;
      					removeEventListener(Event.ENTER_FRAME,on);
      				hanabi();
      				
      					
      						
      						}
      					}
   	
   	private function hanabi():void{
   		
   		balls=new Array();
   		for(var i:uint=0;i<ballNum;i++){
   		ball=new BALL(10,Math.random()*0xffffff);
   		ball.posy=-100;
   		ball.x=stX;
   		ball.y=stY-100;
   		ball.vx=Math.random()*10-5;
   		ball.vy=Math.random()*10-5;
   		ball.vz=Math.random()*10-5;
   		addChild(ball);
   		balls.push(ball);
   		
   		}
   		addEventListener(Event.ENTER_FRAME,onEnter);
   		}
   		
   		
   		private function onEnter(e:Event):void{
   			for(var i:uint=0;i<ballNum;i++){
   			var ball:BALL=balls[i];
   			move(ball);
   			}
   			sortz()
   		}
   		
   		private function move(ball:BALL):void{
   			
   			ball.vy+=gravity;
   			ball.posz+=ball.vz;
   			ball.posx+=ball.vx;
   			ball.posy+=ball.vy;
   			
   			if(ball.posz>-fl){
   			var scale:Number=fl/(fl+ball.posz);
   			ball.scaleX=ball.scaleY=scale;
   			ball.x=stX+ball.posx*scale;
   			ball.y=stY+ball.posy*scale;
   			ball.visible=true;
   			}else{
   				ball.visible=false;
   			}
   			
   			if(ball.posy>floor){
   				ball.posy=floor;
   				ball.vy*=bounce;
   				}
   			
   			
   			}
   		private function sortz():void{
   			balls.sortOn("posz",Array.NUMERIC | Array.DESCENDING);
   			for(var i:uint=0;i<ballNum;i++){
   			var ball:BALL=balls[i];
   		    setChildIndex(ball,i);
   		}
   			}	
   			
   }
   
   
   
}
import flash.display.Sprite;

class BALL extends Sprite{
	public var radius:int;
	public var color:uint;
	public var vx:Number =0;
	public var vy:Number =0;
	public var vz:Number =0;
	public var posx:Number=0;
   	public var posy:Number=0;
   	public var posz:Number=0;
	
	public function BALL(radius:int=10,color:uint=0x000000){
		this.radius =radius;
		this.color =color;
		graphics.lineStyle(0);
		graphics.beginFill(color);
		graphics.drawCircle(0,0,radius);
		graphics.endFill();
		}
}