forked from: マウスをぐるぐる回すと円が描画される

by kenta
マウスをぐるぐる回すと円がどんどん描画されていきます。
* 右周りでも左周りでもOK
* 画面上の線はマウスで円を描いているかどうかの判定です。
* 遅かったりすると線は途切れます。
* つながる様にマウスを回す事!
* 
♥0 | Line 117 | Modified 2009-09-26 02:02:30 | MIT License
play

ActionScript3 source code

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

// forked from yooKo's マウスをぐるぐる回すと円が描画される
/**
 * 
 * マウスをぐるぐる回すと円がどんどん描画されていきます。
 * 右周りでも左周りでもOK
 * 画面上の線はマウスで円を描いているかどうかの判定です。
 * 遅かったりすると線は途切れます。
 * つながる様にマウスを回す事!
 * 
 */

package {
	import flash.display.Graphics;
	import flash.display.Stage;
	import flash.display.Sprite;
	import flash.events.EventDispatcher;
	import flash.events.TimerEvent;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.utils.Timer;
	
    public class FlashTest extends Sprite {
		private var _timer:Timer;
		private var _canvas:Graphics;		
		private var _flg:Boolean = false;
		
		
		public function FlashTest() {
			init();            
        }
		
		public function init():void {
			_canvas = this.graphics;
			stage.addEventListener(MouseEvent.MOUSE_MOVE, drawing);
			
			_timer = new Timer(60);
			_timer.addEventListener( TimerEvent.TIMER, onTimerHandler );			
			_timer.start();
		}
		
		private function drawing(e:MouseEvent):void {
			if(_flg){_canvas.lineTo(stage.mouseX, stage.mouseY);}	
		}	
		
		private function processing():void {
			var circle:Sprite = new Sprite();
			circle.x = Math.random() * stage.stageWidth;
			circle.y = Math.random() * stage.stageHeight;
			var g:Graphics = circle.graphics;
			g.clear();
			g.beginFill(Math.random() * 0xFFFFFF);
			g.drawCircle(0, 0, 20);
			g.endFill();	
			addChild(circle);
		}
		
		private var _swich:int;
		private var _mouseX:Number;
		private var _mouseY:Number
		private var _distanceX:Number;
		private var _distanceY:Number;
		private var _dX:int;
		private var _dY:int;
		
		private function onTimerHandler( event:TimerEvent = null ):void {			
			if (_flg == false) { _canvas.clear() };
			_flg = true;
			_canvas.lineStyle(3, 0x0000FF);
			_canvas.moveTo(stage.mouseX, stage.mouseY);
			
			_distanceX = stage.mouseX - _mouseX;
			_distanceY = stage.mouseY - _mouseY;
			_mouseX = stage.mouseX;
			_mouseY = stage.mouseY;	
			_dX = Math.abs(_distanceX);
			_dY = Math.abs(_distanceY);			

			switch( _swich ) {   				 
				case 0:				 
				if ( _dX < _dY && _dY > 20 ) {
					_swich = 1;                       	
				} else if ( _dX > _dY && _dX > 20 ) {
					_swich = 5;   
				}
				break;
				
				case 1:
				if ( _dX > _dY && _dX > 20 ) {
					_swich = 2; 
				} else {
					_swich = 0;
					_flg = false;
				}
				break;
				
				case 2:
				if ( _dX < _dY && _dY > 20 ) {
					_swich = 3;
				} else {
					_swich = 0;
					_flg = false;
				}
				break;
				
				case 3:
				if ( _dX > _dY && _dX > 20 ) {
					_swich = 0;
					processing();
				} else {
					_swich = 0;
					_flg = false;
				} 
				break;				
				
				case 5:
				if ( _dX < _dY && _dY > 20 ) {
					_swich = 6;
				} else {
					_swich = 0;
					_flg = false;
				}
				break;
				
				case 6:
				if ( _dX > _dY && _dX > 20 ) {
					_swich = 7;
				} else {
					_swich = 0;
					_flg = false;
				}
				break;
				
				case 7:
				if ( _dX < _dY && _dY > 20 ) {
					_swich = 0;
					processing();
				} else {
					_swich = 0; 
					_flg = false;
				}
				break;
			}
		}			
    }
}