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

Boxs make "Hello World."

@author ...
Get Adobe Flash player
by zFlix 08 Feb 2009
// forked from mtok's 
// forked from mtok's 
// forked from mtok's 
package  
{
        import flash.text.*;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Matrix;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.utils.Dictionary;
	/**
	 * 
	 * @author ...
	 */
	public class Tiling extends Sprite
	{
		private var boxes:Array;
		private var mat:Matrix;
		private var dic:Dictionary;
		private var _background:Bitmap;
		private var marginTop:Number = 7.5;
		private var marginLeft:Number = 7.5;
                private var msg:String = "Hello \n World!!";
                private var bSize:int = 12;
                private var worldSize:int = 40;

		public function Tiling() 
		{
			addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);;
		}
		
		private function addedToStageHandler(e:Event):void 
		{
			removeEventListener(e.type, arguments.callee);
			stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
			
			dic = new Dictionary(true);
			
			var tf:TextField = new TextField();
                        //tf.type = TextFieldType.INPUT;
                        tf.x = 400;
			tf.autoSize = TextFieldAutoSize.LEFT;
                        //tf.background = true;
                        //tf.border = true;
			//tf.text = msg.charAt(int(Math.random()*msg.length));
                        tf.text = msg;//.charAt(int(Math.random()*msg.length));

                        addChild(tf);

			//trace(tf.width, tf.height);
			
                        var bd:BitmapData = new BitmapData(worldSize, worldSize, true, 0x00000000);
			var mat:Matrix = new Matrix();
			mat.ty = -3;
			bd.draw(tf, mat);
			//addChild(new Bitmap(bd));
			boxes = new Array();
			var box:DisplayObject;
			var c:uint;
			for (var i:int = 0; i < bd.height; i++) 
                        {
				for (var j:int = 0; j < bd.width; j++) 
                                {
					c = bd.getPixel32(j, i);
					if (c != 0) 
                                        {
						box = Box.createBox(bSize, bSize);
						box.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
						box.x = bSize * int((worldSize/2) * Math.random()) + marginLeft;
						box.y = bSize * int((worldSize/2) * Math.random()) + marginTop;
						dic[box] = new Point(j, i);
						
						//graphics.beginFill(0x00ff00);
						//graphics.drawCircle(j*30 + 7.5, i*30 + 7.5, 7.5);
						//graphics.endFill();
						
						addChild(box);
						boxes.push(box);
					}
				}
			}
			
		}

		private function mouseDownHandler(e:MouseEvent):void 
		{
			stage.removeEventListener(e.type, arguments.callee);
			startAnimation();
			//var b:Box = e.target as Box;
			//b.moveUp();
			//b.moveDown();
			//b.moveRight();
			//b.moveLeft();
		}
		
		private function startAnimation():void
		{
			var b:Box;
			var p:Point;
			for (var i:int = 0; i < boxes.length; i++) {
				b = boxes[i] as Box;
				b.addEventListener(Event.COMPLETE, boxCompleteHandler);
				p = dic[b];
				pokeBox(b, p);
			}
		}
		
		private function boxCompleteHandler(e:Event):void 
		{
			var b:Box = e.target as Box;
			var p:Point = dic[b];
			pokeBox(b, p);
		}

		private function pokeBox(b:Box, p:Point):void 
                {
			var pos:Point = getCellPosition(b);
			var dx:Number = p.x - pos.x;
			var dy:Number = p.y - pos.y;
			if (dx == 0 && dy == 0) 
                        {
				//trace(pos, p);
				return;
			}
			if (Math.abs(dx) > Math.abs(dy)) 
                        {
				if (dx > 0) 
                                {
					b.moveRight();
				}
                                else 
                                {
					b.moveLeft();
				}
			}
                        else 
                        {
				if (dy < 0) 
                                {
					b.moveUp();
				}
                                else 
                                {
					b.moveDown();
				}
			}
		}

		private function getCellPosition(b:Box):Point 
                {
			var r:Rectangle = b.getRect(b.parent); //trace(r.x - marginLeft, r.y - marginTop);
			var p:Point = new Point(Math.round((r.x - marginLeft) / r.width), Math.round((r.y - marginTop)/r.height) );
			return p;
		}
	}
}

import flash.events.MouseEvent;
import flash.events.Event;
import flash.display.Sprite;
import flash.display.DisplayObject;
import caurina.transitions.Tweener;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.geom.Matrix;

internal class Box extends Sprite 
{
	private var obj:Object;
        private var wt:Number;
        private var ht:Number;
	
        public function Box() 
        {
		super();
	}

	public static function createBox(w:Number, h:Number, color:uint = 0xFD5322):Box
        //0x000066):Box 
        {
		var b:Box = new Box();
                b.graphics.beginFill(0xffffff);
                //b.graphics.beginFill(0x000000);
		b.graphics.drawRect(0, 0, w, h); 
		b.graphics.endFill();

		b.graphics.beginFill(color);
		b.graphics.drawRect(2.5, 2.5, w-5, h-5); 
		b.graphics.endFill();

		//b.graphics.beginFill(0xFF0000);
                b.graphics.beginFill(0xFFFFFF);
                //b.graphics.drawRect(0, 0, w/2, h/2); 
                //b.graphics.drawRect(w/2, h/2, w/2, h/2);

		b.graphics.drawCircle(w*0.25, w*0.35, w/4);
		b.graphics.drawCircle(w*0.75, w*0.35, w/9);
		b.graphics.drawCircle(w*0.5, w*0.7, 2);
		b.graphics.endFill();

		b.graphics.beginFill(color);

		//b.graphics.drawCircle(w*0.25, w*0.38, w/15);
		//b.graphics.drawCircle(w*0.75, w*0.38, w/15);
		//b.graphics.drawCircle(w*0.5, w*0.7, 1);
		b.graphics.endFill();
		b.buttonMode = true;
		b.useHandCursor = true;

		return b;
	}

	public function moveUp():void 
        {
		if (Tweener.isTweening(obj)) 
                {
			//trace('is tweening');
			return;
		}
		
                obj = { angle:0 };
		
                Tweener.addTween(obj, { angle:Math.PI*0.5, time:0.5, transition:"easeInOutCubic",
			onStartScope:this,
			onStart:function():void 
                        {
				var rect:Rectangle = this.getRect(this.parent);
				obj.matrix = this.transform.matrix;
				obj.p = new Point(rect.x + rect.width, rect.y);
				//trace('start',this.p);
			},
			onUpdateScope:this,
			onUpdateParams:[obj],
			onUpdate:onUpdate,
			onCompleteScope:this,
			onCompleteParams:[obj],
			onComplete:onComplete
		});
	}

	public function moveDown():void 
        {
		if (Tweener.isTweening(obj)) 
                {
			//trace('is tweening');
			return;
		}
		var obj:Object = { angle:0 };
		Tweener.addTween(obj, { angle:Math.PI*0.5, time:0.5, transition:"easeInOutCubic",
			onStartScope:this,
			onStart:function():void 
                        {
				var rect:Rectangle = this.getRect(this.parent);
				obj.matrix = this.transform.matrix;
				obj.p = new Point(rect.x, rect.y + rect.height);
				//trace('start',this.p);
			},
			onUpdateScope:this,onUpdateParams:[obj],onUpdate:onUpdate,
			onCompleteScope:this,onCompleteParams:[obj],onComplete:onComplete
		});	
	}

	public function moveLeft():void {
		if (Tweener.isTweening(obj)) 
                {
			//trace('is tweening');
			return;
		}
		var obj:Object = { angle:0 };
		Tweener.addTween(obj, { angle:Math.PI*0.5, time:0.5, transition:"easeInOutCubic",
			onStartScope:this,
			onStart:function():void 
                        {
				var rect:Rectangle = this.getRect(this.parent);
				obj.matrix = this.transform.matrix;
				obj.p = new Point(rect.x, rect.y);
				//trace('start',this.p);
			},
			onUpdateScope:this,onUpdateParams:[obj],onUpdate:onUpdate,
			onCompleteScope:this,onCompleteParams:[obj],onComplete:onComplete
		});		
	}

	public function moveRight():void 
        {
		if (Tweener.isTweening(obj)) 
                {
			//trace('is tweening');
			return;
		}
		var obj:Object = { angle:0, mc:this };
		
                Tweener.addTween(obj, { angle:Math.PI*0.5, time:0.5, transition:"easeInOutCubic",
			onStartScope:this,
			onStart:function():void 
                        {
				var rect:Rectangle = this.getRect(this.parent);
				obj.matrix = this.transform.matrix;
				obj.p = new Point(rect.x + rect.width, rect.y + rect.height);
			},
			onUpdateScope:this,onUpdateParams:[obj],onUpdate:onUpdate,
			onCompleteScope:this,onCompleteParams:[obj],onComplete:onComplete
		});
	}

	public function onComplete(params:Object):void 
        {
		Tweener.removeTweens(params);
		dispatchEvent(new Event(Event.COMPLETE));
	}

	public function onUpdate(params:Object):void 
        {
		rotateAt(this, params);
	}

	public function isMoving():Boolean 
        {
		return obj != null;
	}

	private function rotateAt(d:DisplayObject, params:Object):void 
        {
		var m:Matrix = params.matrix.clone();
		var m2:Matrix = new Matrix();
		m2.translate( -params.p.x, -params.p.y);
		m2.rotate(params.angle); //trace(params.angle);
		m2.translate(params.p.x, params.p.y);
		m.concat(m2);
		d.transform.matrix = m;
	}

}