In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

Bitmap Drawer

Get Adobe Flash player
by 883108 05 Mar 2010
    Embed
/**
 * Copyright 883108 ( http://wonderfl.net/user/883108 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/fTMs
 */

package {
	import flash.display.*;
	import flash.events.*;
	import flash.filters.*;
	import flash.text.*;

	public class BitmapDrawerDocument extends Sprite {
		private var _canvas:BitmapData;
		private var _color:uint;
		private var _maxSize:Number = 5;
		private var _density:Number = 40;

		public function BitmapDrawerDocument() {
			init();
		}

		private function init():void {
			var tex:TextField = new TextField  ;
			addChild(tex);
			tex.width = 450;
			tex.x = tex.y = 10;
			tex.multiline = true;
			tex.text = 
			'ビットマップAPIを利用したドローアプリケーションのサンプルです。\n' + 
			'マウスダウン毎にランダムに色と散布サイズを割り当てています。';
			// ビットマップを描画するためのキャンバスとなるデータを作成し、ステージに配置
			_canvas = new BitmapData(stage.stageWidth,stage.stageHeight,true,0x00000000);
			addChild(new Bitmap(_canvas));
			// マウスダウンおよびマウスアップにイベントを割り当て
			stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
			stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
		}
		private function mouseDownHandler($event:MouseEvent):void {
			_color = Math.random() * 0xffffff + 0xff000000;
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}

		private function enterFrameHandler($event:Event):void {
			for (var i:uint = 0; i < _density; i++) {
				// ランダムにラジアン値(0から2πまでの範囲)を生成し、
				// _maxSizeを限界値としてランダムに半径を生成します。
				// xPosはサイン値(-1から1)で変調させた値に半径を与える事によって求めます。
				var angle:Number = Math.random() * (2 * Math.PI);
				var radius:Number = Math.random() * _maxSize;
				var xPos:Number = mouseX + Math.sin(angle) * radius;
				var yPos:Number = mouseY + Math.cos(angle) * radius;
				_canvas.setPixel32(xPos|0, yPos|0, _color);
			}			
		}

		private function mouseUpHandler($event:MouseEvent):void {
			removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}
	}
}