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

flash on 2010-2-26

Get Adobe Flash player
by nacho 26 Feb 2010
    Embed
package {
    import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.ColorTransform;
	import flash.geom.Point;
    public class FlashTest extends Sprite {
        private var _container:Sprite;
		private var _children:Array;
		private var _ref:Sprite;
		private var _division:Sprite;
		
		public function FlashTest()
		{
			_children = [];
			_container = new Sprite();
			_container.x = this.stage.stageWidth>>1;
			_container.y = this.stage.stageHeight>>1;
			with(_container.graphics)
			{
				beginFill(0xFFFFFF);
				lineStyle(1, 0x000000);
				drawRect(-200, -200, 400, 400);
				endFill();
				moveTo(0, -200);
				lineTo(0, 200);
				moveTo(-200, 0);
				lineTo(200, 0);
			}
			this.addChild(_container);
			this._ref = createPoint(100, 0, 0x0000FF);
			_container.addChild(this._ref);
			this._division = new Sprite();
			_container.addChild(this._division);
			updateDivision();
			
			this._container.addEventListener(MouseEvent.CLICK, onClick);
			this._container.addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
		
		private function onClick(evt:MouseEvent):void
		{
			if (evt.ctrlKey)
			{
				this._ref.x = evt.localX;
				this._ref.y = evt.localY;
				updateDivision();
			}
			else
			{
				var child:Sprite = createPoint(evt.localX, evt.localY, 0xFF0000);
				this._container.addChild(child);
				_children.push(child);
			}
		}
		
		private function createPoint(x:int, y:int, color:uint):Sprite
		{
			var child:Sprite = new Sprite();
			with(child.graphics)
			{
				beginFill(color);
				drawCircle(0,0,5);
				endFill();
			}
			child.x = x;
			child.y = y;
			return child;
		}
		
		private function updateDivision():void
		{
			with(_division.graphics)
			{
				clear();
				lineStyle(1, 0xCC33CC);
				moveTo(0,0);
				lineTo(- _ref.y, _ref.x);
				moveTo(0,0);
				lineTo(_ref.y, - _ref.x);
			}
		}
		
		private function onEnterFrame(evt:Event):void
		{
			for each(var child:Sprite in _children)
				testMethod(child);
		}
		
		private function testMethod(target:Sprite):void
		{
			var d:Point = new Point(this._ref.x-target.x, this._ref.y-target.y);
			var v:Point = new Point(-d.y, d.x);
			v.normalize(6);
			
			var ct:ColorTransform = new ColorTransform();
			if (this._ref.x * target.x + this._ref.y * target.y >= 0)
			{
				ct.color = 0xFF0000;
				target.transform.colorTransform = ct;
				target.x += v.x;
				target.y += v.y;				
			}
			else
			{
				ct.color = 0xFF9900;
				target.transform.colorTransform = ct;
				target.x -= 2;
				target.y *= .95;
			}
		}
        
        
    }
}