forked from: forked from: forked from: forked from: forked from: flash on 2010-1-11
forked from forked from: forked from: forked from: forked from: flash on 2010-1-11 (diff: 72)
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();
}
}
