forked from: forked from: Drawing Circle by Draging Mouse

by fukt forked from forked from: Drawing Circle by Draging Mouse (diff: 1)
♥0 | Line 79 | Modified 2010-06-04 23:50:36 | MIT License
play

ActionScript3 source code

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

// forked from Kitosan1986's forked from: 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();

        
    }
}