ダー

by y_tti
増え続けるので注意。
1,2,3 ダー!!
♥0 | Line 134 | Modified 2010-04-09 20:18:52 | MIT License
play

ActionScript3 source code

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

//増え続けるので注意。
//1,2,3 ダー!!

package
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.GradientType;
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.TimerEvent;
	import flash.geom.Matrix;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
	import flash.text.TextFormatAlign;
	import flash.utils.Timer;
	
	[SWF(width = "465", height = "465", frameRate = "30", backgroundColor = "0x000000")]
	public class ytt_degital extends Sprite
	{
		private const WIDTH:Number = 10;
		private const HEIGHT:Number = 10;
		private const MARGIN:Number = 1;
		private var _wCount:int;
		private var _hCount:int;
		private var _bgBm:Bitmap;
		private var _canvas:BitmapData;
		private var _partsBmd:BitmapData;
		
		private const NUMROW:int = 5;
		private const NUM1:Array = [
			1,1,0,0,0,
			0,1,0,0,0,
			0,1,0,0,0,
			0,1,0,0,0,
			1,1,1,0,0,
		];
		private const NUM2:Array = [
			1,1,1,1,1,
			0,0,0,0,1,
			1,1,1,1,1,
			1,0,0,0,0,
			1,1,1,1,1,
		];
		private const NUM3:Array = [
			1,1,1,1,1,
			0,0,0,0,1,
			1,1,1,1,1,
			0,0,0,0,1,
			1,1,1,1,1,
		];
		private var _nums:Array = [NUM1,NUM2,NUM3];
		
		private var _objects:Array = [];
		
		public function ytt_degital()
		{
			Wonderfl.capture_delay( 5 );
			addEventListener(Event.ADDED_TO_STAGE , _init );
		}

		private function _init(e:Event=null):void {
			removeEventListener(Event.ADDED_TO_STAGE , _init );
			
			_wCount = stage.stageWidth / WIDTH;
			_hCount = stage.stageWidth / HEIGHT;
			
			var parts:Shape = new Shape();
			var m:Matrix = new Matrix();
			
			//背景用矩形
			parts.graphics.beginFill(0x333333,1);
			parts.graphics.drawRect(0,0,WIDTH,HEIGHT);
			var bgBmd:BitmapData = new BitmapData(stage.stageWidth,stage.stageHeight,false,0x0);
			for(var ix:int = 0;ix < _wCount;ix++ ){
				for(var iy:int = 0;iy < _hCount;iy++ ){
					m.identity();
					m.translate( ix*WIDTH+ix*MARGIN , iy*HEIGHT+iy*MARGIN );
					bgBmd.draw(parts,m);
				}
			}
			_bgBm = new Bitmap(bgBmd);
			addChild(_bgBm);
			
			//数字用矩形
			m.identity();
			m.createGradientBox(WIDTH,HEIGHT,90 * Math.PI / 180);
			parts.graphics.clear();
			parts.graphics.beginGradientFill(GradientType.LINEAR,[0xecc802,0xc08800],[1,1],[0,255],m);
			parts.graphics.drawRect(0,0,WIDTH,HEIGHT);
			_partsBmd = new BitmapData(WIDTH,HEIGHT,false);
			_partsBmd.draw(parts);
			
			//キャンバス
			_canvas = new BitmapData(stage.stageWidth,stage.stageHeight,true,0x00FFFFFF);
			addChild(new Bitmap(_canvas));
			
			var timer:Timer = new Timer(300);
			timer.addEventListener(TimerEvent.TIMER , _update );
			timer.start();
			
			var changeTimer:Timer = new Timer(300);
			changeTimer.addEventListener(TimerEvent.TIMER , _change );
			changeTimer.start();
			
		}
		
		private function _update(e:TimerEvent):void {
			var m:Matrix = new Matrix();
			_canvas.lock();
			_canvas.fillRect(new Rectangle(0,0,stage.stageWidth,stage.stageHeight),0x00FFFFFF);
			
			for(var i:int = 0;i < _objects.length;i++ ){
				var numDisplay:NumDisplay = _objects[i];
				var num:Array = _nums[numDisplay.numidx];
				for(var iy:int = 0;iy < NUMROW;iy++ ){
					for(var ix:int = 0;ix < NUMROW;ix++ ){
						if(num[ix+iy*NUMROW]){
							var dx:int = (numDisplay.xGrid + ix) * WIDTH + (numDisplay.xGrid + ix)*MARGIN;
							var dy:int = (numDisplay.yGrid + iy) * HEIGHT + (numDisplay.yGrid + iy)*MARGIN;
							m.identity();
							m.translate( dx , dy );
							_canvas.draw(_partsBmd,m);
						}
					}
				}
			}
			
			_canvas.unlock();
		}
		
		private function _change(e:TimerEvent):void {
			_objects.push(new NumDisplay(_nums.length , int(Math.random()*_wCount) , int(Math.random()*_hCount) ));
		}
	}
}
	import flash.display.Sprite;

class NumDisplay extends Sprite{
	public var xGrid:int;
	public var yGrid:int;
	private var _numidxMax:int;
	private var _numidx:int = 0;
	public function NumDisplay($numidxMax:int , $xGrid:int=0 , $yGrid:int=0 ){
		_numidxMax = $numidxMax;
		xGrid = $xGrid;
		yGrid = $yGrid;
	}
	
	public function get numidx():int {
		_numidx++;
		_numidx = (_numidx < _numidxMax) ? _numidx : 0;
		return _numidx;
	}
}