forked from: Drawing Circle by Draging Mouse

by Kitosan1986 forked from Drawing Circle by Draging Mouse (diff: 75)
♥0 | Line 79 | Modified 2010-08-23 03:53:51 | MIT License
play

ActionScript3 source code

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

// forked from Kitosan1986's Drawing Circle by Draging Mouse
package {
    import flash.display.Sprite;
    import flash.events.*;
    
    [SWF(backgroundColor="#FFFFFF",width='600',height='600', frameRate=60)]
    
    public class DrawCircle extends Sprite {
        
            private var Balls:Array = new Array();
            private var Num:uint = 0;
            private var ball:Ball;
            private var MouseSw:Boolean = false;//
            private var OverSw:Boolean = false;//
        //押下時マウスの座標
        private var pre_mx:Number;
        private var pre_my:Number;
        
        //マウスを放したときの座標
        private var mx:Number;
        private var my:Number;

        //ボールのアルファ値
        private var xalpha:Number = 0.7;
        //半径
        private var radius:Number = 15; //半径はみんな同じ。つまりmassも同じで属性的に全く同じ

        //コンストラクタ
        public function DrawCircle(){
                stage.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);
        }        
        private function MouseDown(event:MouseEvent):void{
                if(OverSw == false){
                    MouseSw = true;
                    var cx:Number = stage.mouseX;
                    var cy:Number = stage.mouseY;
                    pre_mx = cx;
                    pre_my = cy;
                    trace(cx);
                    trace(cy);
                    MakeBall(cx,cy);
                    stage.addEventListener(MouseEvent.MOUSE_MOVE, MouseMove);
                }            
            }
                
            private function MouseMove(event:MouseEvent):void{
                //for(var i:uint=0;i<Num;i++){

                    var dx:Number = ball.x - stage.mouseX;
                var dy:Number = ball.y - stage.mouseY;
                    var radius:Number = Math.sqrt(dx*dx + dy*dy);
                ball.scaleX = radius;
                ball.scaleY = radius;


                //} 
                stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp);               
            }
            private function MouseUp(event:MouseEvent):void{
                MouseSw = false;
                stage.removeEventListener(MouseEvent.MOUSE_MOVE, MouseMove); 
            }
        private function MakeBall(cx:Number,cy:Number):void{
                ball = new Ball(20,Math.random()*0xffffff,0.5);
                addChild(ball);
                ball.x = cx;
                ball.y = cy;
                Num += 1;
                ball.buttonMode = true;
                ball.addEventListener(MouseEvent.MOUSE_OVER,MouseOverd);
                ball.addEventListener(MouseEvent.MOUSE_OUT,MouseOut);
                ball.addEventListener(MouseEvent.CLICK,DClicked);
                Balls.push(ball);
                
        }
        private function DClicked(event:MouseEvent):void{
                var target:Ball = event.currentTarget as Ball;
            removeChild(target);
        }
        
        private function MouseOverd(event:MouseEvent):void{
                OverSw = true;
        }
        
        private function MouseOut(event:MouseEvent):void{
                OverSw = false;
        }
    }         
        


            
}

/*-------------------------------------
            パッケージ外クラス定義
 ---------------------------------------*/

import flash.display.*;
import flash.events.*;
class Ball extends Sprite
{
    public var sw:Boolean = false;
    //x
    function Ball(rd:Number,cl:Number,al:Number){           
        this.graphics.beginFill(cl,al);
        this.graphics.drawCircle(0, 0, 1);
        this.graphics.endFill();
        
        
        
        
        
        
        

        
    }
}