ぱーん

by Kihara
♥0 | Line 99 | Modified 2010-11-11 20:29:46 | MIT License
play

ActionScript3 source code

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

package
{
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.events.MouseEvent;
    
    public class ex4_4_2 extends Sprite
    {
        private const N:uint = 200;
        private var array:Array = [];
        private var count:uint=0;
        private var flag:Boolean = true;
        private var g:Array = [];
        private var vy:Array = [];
        private var vx:Array = [];
        private var rad:Array = [];
        private var mx:Number;
        private var my:Number;
        
        public function ex4_4_2(){
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            makeObject();
            stage.addEventListener(MouseEvent.MOUSE_DOWN,onMouseClickDown);
            stage.addEventListener(MouseEvent.MOUSE_UP,onMouseClickUp);
            addEventListener(Event.ENTER_FRAME,onEnterFrame);
        }
        private function makeObject():void{
            for(var i:uint = 0;i<N;i++){
                var sp:Sprite = new Sprite();
                sp.graphics.beginFill(0xFFFFFF*Math.random());
                sp.graphics.drawCircle(0,0,10);
                sp.graphics.endFill();
                sp.x = stage.stageWidth*Math.random();
                sp.y = 0;
                vy.push(10*Math.random()+1);
                vx.push(0);
                g.push(0.8);
                array.push(sp);
                addChild(sp);
            }
        }
        private function onMouseClickDown(e:MouseEvent):void{
            flag = false;
            mx = mouseX;
            my = mouseY;
            g.splice(0);
            var d:Number;
            for(var k:uint=0;k<N;k++){
                g.push(0);
                d=Math.sqrt((mx-array[k].x)*(mx-array[k].x)+(my-array[k].y)*(my-array[k].y));
                rad.push(Math.asin((my-array[k].y)/d));
                if(mx-array[k].x<0)
                    vx[k]=10*Math.cos(rad[k]+Math.PI);
                else vx[k]=10*Math.cos(rad[k]);
                vy[k]=10*Math.sin(rad[k]);
            }
        }
        private function onMouseClickUp(e:MouseEvent):void{
            flag = true;
            rad.splice(0);
            g.splice(0);
            for(var k:uint=0;k<N;k++){
                if(array[k].x==mx && array[k].y==my){
                    vx[k]=(50*Math.random()-25);
                    vy[k]=(50*Math.random()-25);
                }
                g.push(0.8);
            }
        }
        private function onEnterFrame(e:Event):void{
            for(var j:uint=0;j<N;j++){
                
                array[j].y+=vy[j]+g[j];
                array[j].x+=vx[j];
                if(array[j].y>=stage.stageHeight){
                    array[j].y=stage.stageHeight;
                    g[j]=-0.5*(g[j]+vy[j]);
                    vy[j]=0;
                }
                if(array[j].x < 0){
                    array[j].x=0;
                    vx[j]=vx[j]*-0.5;
                }
                if( array[j].x > stage.stageWidth){
                    array[j].x=stage.stageWidth;
                    vx[j]=vx[j]*-0.5;
                }
                if(mx-array[j].x > -10 && mx-array[j].x < 10 && my-array[j].y > -10 && my-array[j].y < 10 && flag==false){
                    array[j].x=mx;
                    array[j].y=my;
                    vx[j]=0;
                    vy[j]=0;
                }
                if(flag==true )
                    g[j]+=0.8;
            }
            
        }
    }
}