Beautifl - Flash Gallery

Thumbnail : InfiniteQuest
InfiniteQuest
osamX 2009-08-27 MIT License

再生するにはFlash Playerが必要です。デスクトップのブラウザでご覧ください。

/**
 * Theme:
 * Play with BitmapPatterBuilder.
 * Purpose of this trial is to find the possibility of the dot pattern.
 *
 * by Takayuki Fukatsu aka fladdict
 **/
package {
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Graphics;
    import flash.display.Sprite;
    import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.events.TimerEvent;
	import flash.geom.Rectangle;
	import flash.utils.Timer;
    
    public class Professional extends Sprite {
		private const WIDTH:uint = 11;
		private const HEIGHT:uint = 6;
		private const SCALE:uint = 3;
		private const SPEED:uint = 4;
		private var mapSprite:Sprite;
		private var mapArray:Array;
		private var dotArray:Array;
		private var yuushaSprite1:Sprite;
		private var yuushaSprite2:Sprite;
		private var play:Boolean = true;
		private var walk:Boolean = true;
		
        public function Professional() {
            stage.scaleMode = StageScaleMode.NO_SCALE;
            
			mapSprite = new Sprite();
			mapSprite.scaleX = SCALE;
			mapSprite.scaleY = SCALE;
			mapSprite.x = -SCALE * 16;
			mapSprite.y = -32;
			
			yuushaSprite1 = new Sprite();
			yuushaSprite1.scaleX = SCALE;
			yuushaSprite1.scaleY = SCALE;
			yuushaSprite1.x = 208;
			yuushaSprite1.y = 208;
			yuushaSprite1.visible = true;
			drawYuusha(yuushaSprite1, Yuusha1());
			yuushaSprite2 = new Sprite();
			yuushaSprite2.scaleX = SCALE;
			yuushaSprite2.scaleY = SCALE;
			yuushaSprite2.x = 208;
			yuushaSprite2.y = 208;
			yuushaSprite2.visible = false;
			drawYuusha(yuushaSprite2, Yuusha2());
			
			initDot();
			initMap();
			drawMap();
			
			this.addChild( mapSprite );
			this.addChild( yuushaSprite1 );
			this.addChild( yuushaSprite2 );
			
			var timer:Timer = new Timer(500);
			timer.addEventListener(TimerEvent.TIMER, walkYuusha);
			timer.start();
			
			addEventListener(Event.ENTER_FRAME, moveMap);
			stage.addEventListener(MouseEvent.CLICK, onClick);
        }
		
		private function onClick(event:MouseEvent):void {
			play = !play;
			if (play) addEventListener(Event.ENTER_FRAME, moveMap);
			else removeEventListener(Event.ENTER_FRAME, moveMap);
		}
		
		private function drawMap():void {
			for (var j:uint = 0; j < HEIGHT; j++ ) {
				for ( var i:uint = 0; i < WIDTH; i++ ) {
					for (var yy:uint = 0; yy < 16; yy++) {
						for (var xx:uint = 0; xx < 16; xx++) {
							dotArray[16 * j + yy][16 * i + xx] = patterns[mapArray[j][i]][yy][xx];
						}
					}
				}
			}
			var g:Graphics = mapSprite.graphics;
			g.beginBitmapFill(BitmapPatternBuilder.build(dotArray,[0xFF92DC00, 0xFF319600, 0xFFFFB848, 0xFFB97A00, 0xFF000000,0xFFFFAA00, 0xFFFE0000, 0xFFFFAA25, 0xFF6BC6FF, 0xFFB1E2FF, 0xFF0092DC] ) );
			g.drawRect(0,10,WIDTH*16,int(465/SCALE)+1);
            g.endFill();
		}
		
		private function walkYuusha(event:TimerEvent):void {
			walk = !walk;
			yuushaSprite1.visible = walk;
			yuushaSprite2.visible = !walk;
		}
		
		private function drawYuusha(sprite:Sprite, bmd1:BitmapData ):void {
			var g:Graphics = sprite.graphics;
			g.beginBitmapFill(bmd1, null, false );
			g.drawRect(0, 0, 32, 16);
			g.endFill();
		}
		
		private function initMap():void {
			mapArray = new Array();
			for (var j:uint = 0; j < HEIGHT; j++) {
				mapArray[j] = new Array();
				for (var i:uint = 0; i < WIDTH; i++) {
					if (j == HEIGHT - 1) mapArray[j][i] = 0;
					else mapArray[j][i] = maprand();
				}
			}
		}
		
		private function initDot():void {
			dotArray = new Array();
			for (var j:uint = 0; j < HEIGHT*16; j++) {
				dotArray[j] = new Array();
				for (var i:uint = 0; i < WIDTH*16; i++) {
					dotArray[j][i] = 0;
				}
			}
		}
		
		private function maprand():uint {
			var rand:uint = int(Math.random() * 100);
			if (rand == 0) return 4;
			else if (rand < 5) return 5;
			else if (rand < 20) return 2;
			else if (rand < 30) return 3;
			else if (rand < 50) return 1;
			return 0;
		}
		
		private function moveMap(event:Event):void {
			//move mapSprite
			mapSprite.x += SPEED;
			if (mapSprite.x == 0) mapSprite.x = -SCALE*16;
			
			//move mapArray
			if (mapSprite.x == -SCALE*16) {
				for (var j:uint = 0; j < HEIGHT; j++) {
					for (var i:uint = WIDTH-1; i > 0; i--) {
						mapArray[j][i] = mapArray[j][i-1];
					}
				}
				for (j = 0; j < HEIGHT; j++) {
					if (j == HEIGHT - 1) mapArray[j][0] = 0;
					else mapArray[j][0] = maprand();
				}
				drawMap();
			}
			
		}
		
        private const patterns:Array =
				[
				//Lawn
                [[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
				 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
				 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
				 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
				 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
				 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
				 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
				 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
				 [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
				 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
				 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
				 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
				 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
				 [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
				 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
				 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
				,
				//Sand
                [[2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2],
				 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
				 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2],
				 [2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
				 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
				 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
				 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
				 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
				 [2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2],
				 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
				 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
				 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
				 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
				 [2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
				 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2],
				 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]]
				,
				//Tree1
                [[0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0],
				 [0, 0, 4, 1, 1, 4, 0, 0, 0, 0, 4, 1, 1, 4, 0, 0],
				 [0, 4, 1, 1, 1, 1, 4, 0, 0, 4, 1, 1, 1, 1, 4, 0],
				 [4, 1, 1, 1, 4, 4, 1, 1, 4, 1, 1, 1, 4, 4, 1, 1],
				 [4, 4, 1, 1, 1, 1, 1, 1, 4, 4, 1, 1, 1, 1, 1, 1],
				 [4, 1, 4, 4, 1, 1, 1, 4, 4, 1, 4, 4, 1, 1, 1, 4],
				 [4, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1],
				 [4, 4, 1, 1, 1, 1, 4, 1, 4, 4, 1, 1, 1, 1, 4, 1],
				 [4, 1, 1, 1, 4, 4, 1, 4, 4, 1, 1, 1, 4, 4, 1, 4],
				 [4, 4, 1, 1, 1, 1, 1, 1, 4, 4, 1, 1, 1, 1, 1, 1],
				 [4, 4, 4, 1, 1, 1, 1, 1, 4, 4, 4, 1, 1, 1, 1, 1],
				 [0, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 4, 0],
				 [0, 0, 4, 4, 5, 4, 0, 0, 0, 0, 4, 4, 5, 4, 0, 0],
				 [0, 4, 4, 5, 5, 4, 4, 0, 0, 4, 4, 5, 5, 4, 4, 0],
				 [4, 4, 5, 5, 4, 5, 4, 4, 4, 4, 5, 5, 4, 5, 4, 4],
				 [0, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 4, 0]]
				,
				//Tree2
                [[0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0],
				 [0, 0, 0, 0, 4, 1, 1, 1, 1, 1, 1, 4, 4, 0, 0, 0],
				 [0, 0, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 0, 0],
				 [0, 0, 4, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4, 0, 0],
				 [0, 4, 1, 1, 1, 4, 4, 1, 4, 4, 1, 1, 1, 1, 4, 0],
				 [0, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 4],
				 [4, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 4, 4, 1, 1, 4],
				 [4, 1, 1, 1, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4],
				 [4, 4, 4, 1, 1, 1, 1, 1, 4, 1, 4, 1, 1, 1, 4, 4],
				 [0, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 0],
				 [0, 0, 0, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 0, 0],
				 [0, 0, 0, 0, 4, 4, 4, 4, 5, 5, 4, 0, 4, 0, 0, 0],
				 [0, 0, 0, 0, 0, 4, 5, 5, 5, 5, 4, 0, 0, 0, 0, 0],
				 [0, 0, 0, 0, 4, 4, 5, 5, 4, 5, 5, 4, 0, 0, 0, 0],
				 [0, 0, 0, 4, 4, 5, 4, 5, 5, 4, 4, 5, 4, 0, 0, 0],
				 [0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0]]
				,
				//Treasure
                [[4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4],
				 [4, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 4],
				 [4, 7, 6, 6, 7, 6, 6, 7, 7, 6, 6, 7, 6, 6, 7, 4],
				 [4, 7, 6, 6, 7, 6, 6, 7, 7, 6, 6, 7, 6, 6, 7, 4],
				 [4, 7, 6, 6, 7, 6, 6, 7, 7, 6, 6, 7, 6, 6, 7, 4],
				 [4, 7, 6, 6, 7, 6, 6, 7, 7, 6, 6, 7, 6, 6, 7, 4],
				 [4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 4, 4],
				 [4, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 7, 4],
				 [4, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 4],
				 [4, 7, 6, 6, 7, 6, 7, 4, 4, 7, 6, 7, 6, 6, 7, 4],
				 [4, 7, 6, 6, 7, 6, 7, 7, 7, 7, 6, 7, 6, 6, 7, 4],
				 [4, 7, 6, 6, 7, 6, 6, 6, 6, 6, 6, 7, 6, 6, 7, 4],
				 [4, 7, 6, 6, 7, 6, 6, 6, 6, 6, 6, 7, 6, 6, 7, 4],
				 [4, 7, 6, 6, 7, 6, 6, 6, 6, 6, 6, 7, 6, 6, 7, 4],
				 [4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 4, 4],
				 [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4]]
				,
				//Water
                [[ 8,10,10, 9, 9,10, 8, 8, 8,10,10, 9, 9,10, 8, 8],
				 [10,10, 9, 8, 8, 9,10,10,10,10, 9, 8, 8, 9, 8, 8],
				 [ 9, 9,10, 8,10,10,10, 8, 9, 9,10, 8,10,10,10, 8],
				 [ 8, 8, 9,10,10,10, 8, 9, 8, 8, 9,10,10,10, 8, 9],
				 [ 8, 8,10,10, 9, 9,10, 8, 8, 8,10,10, 9, 9,10, 8],
				 [10,10,10, 9, 8, 8, 9,10,10,10,10, 9, 8, 8, 9,10],
				 [ 8, 9, 9,10, 8,10,10,10, 8, 9, 9,10, 8,10,10,10],
				 [ 9, 8, 8, 9,10,10,10, 8, 9, 8, 8, 9,10,10,10, 8],
				 [ 9,10, 8, 8, 8,10,10, 9, 9,10, 8, 8, 8,10,10, 9],
				 [ 8, 9,10,10,10,10, 9, 8, 8, 9,10,10,10,10, 9, 8],
				 [10,10,10, 8, 9, 9,10, 8,10,10,10, 8, 9, 9,10, 8],
				 [10,10, 8, 9, 8, 8, 9,10,10,10, 8, 9, 8, 8, 9,10],
				 [ 9, 9,10, 8, 8, 8,10,10, 9, 9,10, 8, 8, 8,10,10],
				 [ 8, 8, 9,10,10,10,10, 9, 8, 8, 9,10,10,10,10, 8],
				 [ 8,10,10,10, 8, 9, 9,10, 8,10,10,10, 8, 9, 9,10],
				 [10,10,10, 8, 9, 8, 8, 9,10,10,10, 8, 9, 8, 8, 9]]
				 ];
				 
		public function Yuusha1():BitmapData{
            return BitmapPatternBuilder.build(
                [[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 0],
				 [0, 0, 0, 0, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0],
				 [0, 2, 0, 3, 3, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0,  0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0],
				 [0, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 0, 0, 0, 0,  0, 0, 0, 5, 5, 5, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0],
				 [0, 2, 0, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,  0, 0, 0, 5, 5, 3, 5, 4, 4, 4, 4, 4, 4, 4, 4, 0],
				 [0, 2, 0, 0, 3, 1, 3, 1, 1, 3, 1, 1, 1, 0, 0, 0,  0, 0, 0, 0, 3, 5, 3, 5, 5, 5, 4, 4, 4, 0, 0, 0],
				 [0, 2, 0, 0, 3, 1, 3, 1, 1, 3, 1, 1, 0, 0, 0, 0,  0, 0, 0, 0, 3, 5, 3, 5, 5, 5, 5, 0, 0, 0, 0, 0],
				 [0, 2, 0, 0, 0, 3, 3, 1, 1, 1, 1, 0, 2, 2, 2, 0,  0, 0, 5, 5, 0, 3, 3, 5, 5, 5, 5, 0, 0, 0, 0, 0],
				 [0, 2, 2, 1, 1, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2,  0, 0, 5, 5, 0, 4, 5, 5, 4, 4, 4, 4, 0, 0, 0, 0],
				 [0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 2,  0, 0, 0, 3, 3, 4, 5, 4, 3, 4, 4, 0, 0, 0, 0, 0],
				 [1, 1, 3, 2, 1, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1, 2,  0, 0, 0, 0, 5, 5, 3, 3, 4, 4, 5, 0, 0, 0, 0, 0],
				 [0, 3, 3, 1, 2, 3, 3, 2, 2, 2, 1, 2, 1, 1, 1, 2,  0, 0, 0, 0, 5, 5, 4, 4, 4, 4, 4, 5, 0, 0, 0, 0],
				 [0, 3, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 2, 0,  0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0],
				 [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0,  0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0],
				 [0, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0,  0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0],
				 [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,  0, 0, 0, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0]],
                [0x0, 0xFF0049DC, 0xFFFFFFFF, 0xFFFFC7B1, 0xFF47009F, 0xFF0073EF]
            );
        }
		
		public function Yuusha2():BitmapData{
            return BitmapPatternBuilder.build(
                [[0, 2, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 0],
				 [0, 2, 0, 0, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0],
				 [0, 2, 0, 3, 3, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0,  0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0],
				 [0, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 0, 0, 0, 0,  0, 0, 0, 5, 5, 5, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0],
				 [0, 2, 0, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,  0, 0, 0, 5, 5, 3, 5, 4, 4, 4, 4, 4, 4, 4, 4, 0],
				 [0, 2, 0, 0, 3, 1, 3, 1, 1, 3, 1, 1, 1, 0, 0, 0,  0, 0, 0, 0, 3, 5, 3, 5, 5, 5, 4, 4, 4, 0, 0, 0],
				 [0, 2, 0, 0, 3, 1, 3, 1, 1, 3, 1, 1, 0, 0, 0, 0,  0, 0, 0, 0, 3, 5, 3, 5, 5, 5, 5, 0, 0, 0, 0, 0],
				 [0, 2, 0, 0, 0, 3, 3, 1, 1, 1, 1, 2, 2, 2, 0, 0,  0, 0, 0, 0, 0, 3, 3, 5, 5, 5, 5, 0, 0, 0, 0, 0],
				 [1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 2, 1, 1, 1, 2, 0,  0, 0, 0, 5, 5, 4, 5, 5, 4, 4, 4, 4, 0, 0, 0, 0],
				 [0, 3, 2, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 2, 0,  0, 0, 0, 5, 5, 4, 5, 4, 3, 4, 4, 0, 0, 0, 0, 0],
				 [0, 3, 3, 2, 1, 2, 2, 1, 1, 1, 2, 1, 1, 1, 2, 0,  0, 0, 0, 0, 3, 3, 4, 4, 3, 4, 5, 0, 0, 0, 0, 0],
				 [0, 1, 0, 0, 2, 3, 3, 2, 2, 2, 2, 1, 1, 1, 2, 0,  0, 0, 0, 0, 0, 5, 5, 3, 4, 4, 4, 5, 0, 0, 0, 0],
				 [0, 0, 0, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 2, 0, 0,  0, 0, 0, 0, 0, 5, 5, 4, 4, 4, 4, 0, 0, 0, 0, 0],
				 [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0,  0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0],
				 [0, 0, 0, 2, 2, 2, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,  0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0],
				 [0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0]],
                [0x0, 0xFF0049DC, 0xFFFFFFFF, 0xFFFFC7B1, 0xFF47009F, 0xFF0073EF]
            );
        }
    }
}

/**-----------------------------------------------------
 * Use following BitmapPatternBuilder class 
 * 
 * DO NOT CHANGE any codes below this comment.
 *
 * -----------------------------------------------------
*/
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Graphics;
    
class BitmapPatternBuilder{
    /**
     * creates BitmapData filled with dot pattern.
     * First parameter is 2d array that contains color index for each pixels;
     * Second parameter contains color reference table.
     *
     * @parameter pattern:Array 2d array that contains color index for each pixel.
     * @parameter colors:Array 1d array that contains color table.
     * @returns BitmapData
     */
    public static function build(pattern:Array, colors:Array):BitmapData{
        var bitmapW:int = pattern[0].length;
        var bitmapH:int = pattern.length;
        var bmd:BitmapData = new BitmapData(bitmapW,bitmapH,true,0x000000);
        for(var yy:int=0; yy<bitmapH; yy++){
            for(var xx:int=0; xx<bitmapW; xx++){
                var color:int = colors[pattern[yy][xx]];
                bmd.setPixel32(xx, yy, color);
            }
        }
        return bmd;
    }
    
    /**
     * short cut function for Graphics.beginBitmapFill with pattern.
     */
    public static function beginBitmapFill(pattern:Array, colors:Array, graphics:Graphics):void{
        var bmd:BitmapData = build(pattern, colors);
        graphics.beginBitmapFill(bmd);
        bmd.dispose();        
    }
}