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

Hello, World! Particle

package  
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.events.TimerEvent;
        import flash.filters.BlurFilter;
	import flash.geom.Point;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.text.TextLineMetrics;
	import flash.utils.Timer;
	
    [SWF(backgroundColor="#FFFFFF", frameRate=60)]
	public class Main extends Sprite
	{
		private const MSG:String = "Hello, world!";
		private const FNT:String = "Arial";
		private var _particles:Array = [];
		private var _nParticles:int;
		private var _timer:Timer;
		
		public function Main() 
		{
			// create TextField
			var tf:TextField = new TextField();
			tf.defaultTextFormat = new TextFormat(FNT, 10);
			tf.text = MSG;
			
			// draw the TextField on a Bitmap
			var bd:BitmapData = new BitmapData(tf.height, tf.width);
			bd.draw(tf);
			
			var i:int;
			var j:int;
			var sp:Sprite;
			for (i = 0; i < bd.width; i++) {
				for (j = 0; j < bd.height; j++) {
					if (bd.getPixel(i, j) < 0x6a6a6a) {
						sp = new Sprite();
						sp.graphics.beginFill(0x333333);
						sp.graphics.drawCircle(0, 0, 3);
						sp.graphics.endFill();
						addChild(sp);
						_particles.push(new Particle(i, j, sp));
						
					}
				}
			}
			
			_nParticles = _particles.length;
			
			trace(_nParticles, " particles created.");
			
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
			stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
			stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
			stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
			
			_timer = new Timer(50);
			_timer.addEventListener(TimerEvent.TIMER, timerHandler);
		}
		
		private function timerHandler(e:TimerEvent):void 
		{
			Particle.increaseMouseGravity();
		}
		
		private function mouseDownHandler(e:MouseEvent):void 
		{
			_timer.start();
		}
		
		private function mouseUpHandler(e:MouseEvent):void 
		{
			_timer.stop();
			Particle.setMouseGravityToDefault();
		}
		
		private function mouseMoveHandler(e:MouseEvent):void 
		{
			Particle.setMousePosition(e.stageX, e.stageY);
		}
		
		private function enterFrameHandler(e:Event):void 
		{
			for (var i:int = 0; i < _nParticles; i++)
				_particles[i].move();
		}
		
	}
	
}

import flash.display.Sprite;

class Particle {
	private var _sp:Sprite;
	private var _originalX:int;
	private var _originalY:int;
	private var _x:Number = 0;
	private var _vx:Number = 0;
	private var _y:Number = 0;
	private var _vy:Number = 0;
	private var _u:Number;
	private var _v:Number;
	private var _l:Number;
	private static const K:Number = 0.2;
	private static const A0:Number = 2 * 0.4 * K;
	private static const A1:Number = K * K;
	private static var _L:int = 100;
	private static var _mouseX:int;
	private static var _mouseY:int;
	
	
	public function Particle(xPos:int, yPos:int, sprite:Sprite):void {
		_sp = sprite;
		_sp.x = _originalX = xPos * 7;
		_sp.y = _originalY = yPos * 7;
	}
	
	public static function setMousePosition(xPos:int, yPos:int):void {
		_mouseX = xPos;
		_mouseY = yPos;
	}
	
	public static function increaseMouseGravity():void {
		_L *= 1.15;
	}
	
	public static function setMouseGravityToDefault():void {
		_L = 100;
	}
	
	public function move():void {
		_vx -= A0 * _vx + A1 * _x;
		_vy -= A0 * _vy + A1 * _y;
		
		_u = _mouseX - _sp.x;
		_v = _mouseY - _sp.y;
		
		_l = _u * _u + _v * _v + _L * 1.5;
		
		_x += _vx + _u / _l * _L;
		_y += _vy + _v / _l * _L;
		
		_sp.x = _originalX + _x;
		_sp.y = _originalY + _y;
	}
}