<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>what the flash are you talking about</title>
	<atom:link href="http://www.wtflash.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.wtflash.com</link>
	<description></description>
	<pubDate>Sat, 23 May 2009 23:30:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Particle Systems in ActionScript 2.0 and 3.0 - Part 1</title>
		<link>http://www.wtflash.com/2009/05/particle-systems-in-actionscript-20-and-30-part-1/</link>
		<comments>http://www.wtflash.com/2009/05/particle-systems-in-actionscript-20-and-30-part-1/#comments</comments>
		<pubDate>Sat, 23 May 2009 23:00:43 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
		
		<category><![CDATA[actionscript 2.0]]></category>

		<category><![CDATA[libraries]]></category>

		<category><![CDATA[particle system]]></category>

		<guid isPermaLink="false">http://wtflash.com/?p=149</guid>
		<description><![CDATA[I&#8217;ve always had a interest in particle systems stemming from playing a lot of video games as a kid (wait, still do) and wondering how explosions and blood splatters were created.  I figured by developing my own basic particle system library I would be able to 1) learn more about ActionScript, 2) have a greater [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always had a interest in particle systems stemming from playing a lot of video games as a kid (wait, still do) and wondering how explosions and blood splatters were created.  I figured by developing my own basic particle system library I would be able to 1) learn more about ActionScript, 2) have a greater understanding of OOP, and 3) do something cool!</p>
<p>A quick, but necessary reminder: I am a Flash designer attempting to learn more about ActionScript development so please follow at your own risk and if you see an error please leave a comment.</p>
<p>We&#8217;ll begin with an ActionScript 2.0 version since I need a little refresher.  Revisiting AS2 makes me appreciate AS3 that much more.  Here&#8217;s a sample usage of the particle system:</p>

    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="swfobj_0" width="800" height="600" align="none">
      <param name="movie" value="http://wtflash.com/wp-content/uploads/speck.swf" />
      <param name="align" value="none" />
      <!--[if !IE]>-->
      <object type="application/x-shockwave-flash" data="http://wtflash.com/wp-content/uploads/speck.swf" width="800" height="600" align="none">
      <!--<![endif]-->
        <p>The Flash plugin is required to view this object.</p>
      <!--[if !IE]>-->
      </object>
      <!--<![endif]-->
    </object>

<p>(this performance test was inspired by the <a href="http://blog.greensock.com/tweening-speed-test/">GreenSock Performance Tests</a>)</p>
<p>These sites are good reads and helped point me in the right direction: <a href="http://www.particlesystems.org/">Particle System API</a> and <a href="http://web.cs.wpi.edu/~matt/courses/cs563/talks/psys.html">&#8220;Particle Systems&#8221; by Allen Martin</a>.  The library is simple and consists of only 2 classes: a Particle class and an Emitter class.  The Particle class will represent a single particle that is instantiated by the Emitter class. </p>
<h3>The Particle Class</h3>
<pre class="brush: as3;">
//AS2///////////////////////////////////////////////////////////////////////////
//
//  Emitter
//
//  Copyright (c) 2009 Jason Woan. All rights reserved.
//
//  Do what you want with the code.  Credit is nice but not necessary.  Use at
//  your own risk and discretion.  I won't be held responsible if your site
//  blows up.  Enjoy!
//
////////////////////////////////////////////////////////////////////////////////

/**
 *	This class is the blueprint to a single particle maintaining its inherent
 *	properties and performing position calculations.  Use as a MovieClip's
 *	linkage class.
 *
 *	@version 0.1.0
 *	@langversion ActionScript 2.0
 *	@playerversion Flash 8.0
 *
 *	@author Jason_Woan
 *	@since  2009-05-14
 */
dynamic class com.jasonwoan.speck.Particle extends MovieClip {

	//--------------------------------------
	//  PUBLIC VARIABLES
	//--------------------------------------

	public var xVelocity:Number = 1;
	public var yVelocity:Number = 1;
	public var xAccel:Number = 0;
	public var yAccel:Number = 0;
	//public var rotationalVelocity:Number = 0;
	//public var mass:Number = 1;
	public var age:Number = 0;
	public var life:Number = 10;
	public var dead:Boolean = false;
	public var direction:Number = 45;
	public var speed:Number = 1;
	public var fade:Boolean = false;
	public var scale:Number = 100;
	public var shrink:Boolean = false;
	public var xMinBound:Number;
	public var xMaxBound:Number;
	public var yMinBound:Number;
	public var yMaxBound:Number;
	public var restitution:Number;

	//--------------------------------------
	//  PRIVATE &amp; PROTECTED VARIABLES
	//--------------------------------------

	private var _xPrevious:Number;
	private var _yPrevious:Number;
	private var _scaleStart:Number;

	//--------------------------------------
	//  CONSTRUCTOR
	//--------------------------------------
	/**
	 *	@constructor
	 */
	public function Particle() {
		// calculate directional velocity
		var radDirection:Number = this.direction * Math.PI / 180;
		xVelocity = this.speed * Math.cos(radDirection);
		yVelocity = this.speed * Math.sin(radDirection);
		this._xscale = this._yscale = this.scale;
	}

	//--------------------------------------
	//  PUBLIC METHODS
	//--------------------------------------

	public function update():Void
	{
		if (!dead) {
			// save previous position
			this._xPrevious = this._x;
			this._yPrevious = this._y;

			// check bounds
			if (this.xMinBound != undefined) {
				if (this._x + this.xVelocity &lt; this.xMinBound) {
					this.xVelocity = -1 * this.restitution;
				}
			}
			if (this.xMaxBound != undefined) {
				if (this._x + this.xVelocity &gt; this.xMaxBound) {
					this.xVelocity = -1 * this.restitution;
				}
			}
			if (this.yMinBound != undefined) {
				if (this._y + this.yVelocity &lt; this.yMinBound) {
					this.yVelocity *= -1 * this.restitution;
				}
			}
			if (this.yMaxBound != undefined) {
				if (this._y + this.yVelocity &gt; this.yMaxBound) {
					this.yVelocity *= -1 * this.restitution;
				}
			}

			// update position
			this._x += this.xVelocity;
			this._y += this.yVelocity;

			// update velocity
			this.xVelocity += this.xAccel;
			this.yVelocity += this.yAccel;

			this.age++;

			// particle shape and alpha dynamics
			if (this.fade) {
				this._alpha = 100 - Math.round(this.age / this.life * 100);
			}

			if (shrink) {
				this._xscale = this._yscale = this.scale - Math.round(this.age / this.life * scale);
			}

			// check for death
			if (this.age == this.life) {
				this.dead = true;
				this._visible = false;
			}
		}
	}

	public function revive():Void
	{
		if (this.dead) {
			this.dead = false;
			this._visible = true;
			this.age = 0;
			// reset velocities
			var radDirection:Number = this.direction * Math.PI / 180;
			this.xVelocity = this.speed * Math.cos(radDirection);
			this.yVelocity = this.speed * Math.sin(radDirection);
		}
	}
}
</pre>
<h3>The Emitter Class</h3>
<pre class="brush: as3;">
//AS2///////////////////////////////////////////////////////////////////////////
//
//  Emitter
//
//  Copyright (c) 2009 Jason Woan. All rights reserved.
//
//  Do what you want with the code.  Credit is nice but not necessary.  Use at
//  your own risk and discretion.  I won't be held responsible if your site
//  blows up.  Enjoy!
//
////////////////////////////////////////////////////////////////////////////////

import mx.utils.Delegate;

import com.tbwachiat.speck.Particle;

/**
 *	The Emitter manages the creation of particles.
 *
 *	@version 0.1.0
 *	@langversion ActionScript 2.0
 *	@playerversion Flash 8.0
 *
 *	@author Jason_Woan
 *	@since  2009-05-14
 */
class com.jasonwoan.speck.Emitter {

	//--------------------------------------
	//  PRIVATE &amp; PROTECTED VARIABLES
	//--------------------------------------

	private var _gravity:Number = 0;

	// number of particles per step
	private var _birthRate:Number = 3;

	// the life of each particle in seconds
	private var _life:Number = 100;

	private var _scale:Number = 100;
	private var _scaleMin:Number;
	private var _scaleMax:Number;
	private var _speed:Number = 1;
	private var _direction:Number = 45;
	private var _randomDirection:Boolean = false;

	private var _xAccel:Number = 0;
	private var _yAccel:Number = 0;

	private var _xMin:Number = 0;
	private var _xMax:Number = 0;
	private var _yMin:Number = 0;
	private var _yMax:Number = 0;

	private var _xMinBound:Number;
	private var _xMaxBound:Number;
	private var _yMinBound:Number;
	private var _yMaxBound:Number;
	private var _restitution:Number = 1;

	private var _fade:Boolean = false;
	private var _shrink:Boolean = false;

	private var _emitter:MovieClip;
	private var _particleID:String;
	private var _particles:Array;

	private var _oldestIndex:Number = 0;

	//--------------------------------------
	//  CONSTRUCTOR
	//--------------------------------------
	/**
	 *	@constructor
	 */
	public function Emitter(pEmitter:MovieClip, pParticleID:String, pParameters:Object) {
		_emitter = pEmitter;
		_particleID = pParticleID;
		_particles = new Array();

		// check parameter object
		for (var prop in pParameters) {
			switch (prop) {
				// the life of a particle in frames
				// the particle will be recycled if dead
				case &quot;life&quot; :
				if (pParameters[prop] &gt; 0) _life = pParameters[prop];
				break;

				// the number of particles generated per update on enter frame
				case &quot;birthRate&quot; :
				if (pParameters[prop] &gt; 0) _birthRate = pParameters[prop];
				break;

				// a positive acceleration of a particle in the y-direction
				case &quot;gravity&quot; :
				_gravity = pParameters[prop];
				break;

				// the initial x and y scale of a particle
				case &quot;scale&quot; :
				_scale = pParameters[prop];
				break;

				// the minimum initial x and y scale of a particle
				// use in conjuction with scaleMax
				case &quot;scaleMin&quot; :
				_scaleMin = pParameters[prop];
				break;

				// the maximum initial x and y scale of a particle
				// use in conjuction with scaleMin
				case &quot;scaleMax&quot; :
				_scaleMax = pParameters[prop];
				break;

				// the distance traveled by the particle per enter frame
				case &quot;speed&quot; :
				_speed = pParameters[prop];
				break;

				// acceleration of the particle in the x-direction
				case &quot;xAccel&quot; :
				_xAccel = pParameters[prop];
				break;

				// acceleration of the particle in the y-direction
				case &quot;yAccel&quot; :
				_yAccel = pParameters[prop];
				break;

				// the minimum initial x position to create a particle
				case &quot;xMin&quot; :
				_xMin = pParameters[prop];
				break;

				// the maximum initial x position to create a particle
				case &quot;xMax&quot; :
				_xMax = pParameters[prop];
				break;

				// the minimum initial y position to create a particle
				case &quot;yMin&quot; :
				_yMin = pParameters[prop];
				break;

				// the maximum initial y position to create a particle
				case &quot;yMax&quot; :
				_yMax = pParameters[prop];
				break;

				// the left &quot;wall&quot; of the emitter
				case &quot;xMinBound&quot; :
				_xMinBound = pParameters[prop];
				break;

				// the right &quot;wall&quot; of the emitter
				case &quot;xMaxBound&quot; :
				_xMaxBound = pParameters[prop];
				break;

				// the &quot;ceiling&quot; of the emitter
				case &quot;yMinBound&quot; :
				_yMinBound = pParameters[prop];
				break;

				// the &quot;floor&quot; of the emitter
				case &quot;yMaxBound&quot; :
				_yMaxBound = pParameters[prop];
				break;

				// if true, the particle will fade away in proportion
				// to the particles age and life
				case &quot;fade&quot; :
				_fade = pParameters[prop];
				break;

				// if true, the particle will shrink away in proportion
				// to the particles age and life
				case &quot;shrink&quot; :
				_shrink = pParameters[prop];
				break;

				// the amount of velocity retained when a particle
				// hits a wall, ceiling or floor
				case &quot;restitution&quot; :
				_restitution = pParameters[prop];
				break;

				// the initial direction of a particle in degrees or
				// &quot;random&quot; string
				case &quot;direction&quot; :
				// check for random string
				if (pParameters[prop] == &quot;random&quot;) {
					_randomDirection = true;
				} else {
					if (typeof(pParameters[prop]) == &quot;number&quot;) _direction = pParameters[prop];
				}
				break;
			}
		}
	}

	//--------------------------------------
	//  GET / SET
	//--------------------------------------

	/**
	 *	@private
	 */
	public function get numParticles():Number
	{
		return _particles.length;
	}

	//--------------------------------------
	//  PUBLIC METHODS
	//--------------------------------------

	/**
	 *	Starts the emitter.
	 */
	public function start():Void
	{
		_emitter.onEnterFrame = Delegate.create(this, update);
	}

	/**
	 *	Stops the emitter.
	 */
	public function stop():Void
	{
		delete _emitter.onEnterFrame;
	}

	//--------------------------------------
	//  PRIVATE &amp; PROTECTED INSTANCE METHODS
	//--------------------------------------

	/**
	 *	Step update method.
	 */
	private function update():Void
	{
		// update all particles
		var i:Number = _particles.length;
		while (i--) {
			_particles[i].update();
		}

		// create particles specified in birth rate

		var particle:MovieClip;
		var d:Number;
		var startX:Number;
		var startY:Number;
		var scale:Number;
		i = _birthRate;
		while (i--) {
			d = (_randomDirection) ? Math.round(Math.random() * 360) : _direction;
			startX = _xMin + Math.round(Math.random() * (_xMax - _xMin));
			startY = _yMin + Math.round(Math.random() * (_yMax - _yMin));

			if (_scaleMin != undefined &amp;&amp; _scaleMax != undefined) {
				scale = _scaleMin + Math.round(Math.random() * (_scaleMax - _scaleMin));
			} else {
				scale = _scale;
			}

			// resuse dead particles first
			if (_particles[_oldestIndex].dead) {
				particle = _particles[_oldestIndex];
				particle.revive();
				particle._x = 0;
				particle._y = 0;
				if (_oldestIndex + 1 &lt; _particles.length) {
					_oldestIndex++;
				} else {
					_oldestIndex = 0;
				}
			} else {
				// create a new particle
				particle = _emitter.attachMovie(_particleID, _particleID + _particles.length, _emitter.getNextHighestDepth(), {direction:d, speed:_speed, scale:scale});
				_particles.push(particle);
			}

			// set particle properties
			particle.life = _life;
			particle._x = startX;
			particle._y = startY;
			particle.xAccel = _xAccel;
			particle.yAccel = _yAccel + _gravity;
			particle.fade = _fade;
			particle.shrink = _shrink;

			particle.xMinBound = _xMinBound;
			particle.xMaxBound = _xMaxBound;
			particle.yMinBound = _yMinBound;
			particle.yMaxBound = _yMaxBound;
			particle.restitution = _restitution;
		}
	}
}
</pre>
<h3>Usage</h3>
<p>First add the particle system package to the class path in the Publish Settings or ActionScript 2.0 preferences.  Create a particle MovieClip in Flash and point its linkage class to the Particle class location.</p>
<p><img src="http://www.wtflash.com/wp-content/uploads/particle-symbol.jpg" alt="particle-symbol" title="particle-symbol" width="500" height="536" class="alignnone size-full wp-image-166" /></p>
<p>Create an empty MovieClip that will serve as the particle container where all particles instances will be created.  Create an instance of the Emitter and assign the empty container MovieClip as the first argument and the linkage identifier of the particle symbol as the second argument.  Don&#8217;t forget to import the particle system package (coined speck). Use the start and stop methods of the Emitter object to control the system.</p>
<pre class="brush: as3;">
import com.jasonwoan.speck.*;

var e:Emitter = new Emitter(emitterMC, &quot;FireParticle&quot;);
e.start();
</pre>
<p>This is the most basic usage of this particle system.  To customize the default emitter, you&#8217;ll want to add an object of parameters as a third argument when instantiating an Emitter.  Please refer to the comments in the Emitter class for a description of valid parameters and their effects.  Try messing around with the sample usage at the beginning of the post.</p>
<h3>Finally</h3>
<p>This is by no means a robust particle system.  Ideally, I&#8217;d like to create a ParticleSystem object that would manage any number of Emitters and apply global forces like gravity and surface friction.  I would also add a cue parameter so an Emitter can be tweened.   I&#8217;ll save most of those updates for the AS3 version due to performance issues with AS2.  This particle system library is lightweight and will probably serve well for simple particle effects.</p>
<p>I came across the following &#8220;gotcha&#8221; during development:</p>
<p>In ActionScript 2.0, an array used as an instance property should be initialized inside the constructor or any subsequent method and NOT when declaring the instance variable.  When you initialize and declare and array instance property the value seems to be treated globally and multiple instances of that object will share the value even though it is access modifier is set to private.  For example:</p>
<p>Bad</p>
<pre class="brush: as3;">
class MyClass{
	private var myArray:Array = [];

	public function MyClass() {

	}
}
</pre>
<p>Good</p>
<pre class="brush: as3;">
class MyClass{
	private var myArray;

	public function MyClass() {
		myArray = [];
	}
}
</pre>
<p>I&#8217;ll post the AS3 version as soon as I finish it.  Thanks for reading and comments/questions/suggestions/recommendations are appreciated.</p>
<p><a href='http://www.wtflash.com/wp-content/uploads/speckas2.zip'>Download Source</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wtflash.com/2009/05/particle-systems-in-actionscript-20-and-30-part-1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Favorite AIR Applications</title>
		<link>http://www.wtflash.com/2009/02/favorite-air-applications/</link>
		<comments>http://www.wtflash.com/2009/02/favorite-air-applications/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 22:52:08 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
		
		<category><![CDATA[tools]]></category>

		<category><![CDATA[AIR]]></category>

		<category><![CDATA[LiveDocs]]></category>

		<category><![CDATA[RSS]]></category>

		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://wtflash.com/?p=133</guid>
		<description><![CDATA[Here is a short and on-going list of my favorite, most-used AIR applications.
TweetDeck
 Get it Here
Anyone who tweets is probably familiar with this app.  It&#8217;s simply an amazing way to create and manage tweets.

ShareFire
 Get it Here
Great XML reader/manager.  Entries can be viewed as HTML using the in-built browser.  Import/export functionality keeps you somewhat synced.

Doc? [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a short and on-going list of my favorite, most-used AIR applications.</p>
<h3><strong>TweetDeck</strong></h3>
<p><strong> </strong><a href="http://wtflash.com/wp-admin/">Get it Here</a></p>
<p>Anyone who tweets is probably familiar with this app.  It&#8217;s simply an amazing way to create and manage tweets.</p>
<p><img class="alignnone size-full wp-image-134" title="tweetdeck" src="http://wtflash.com/wp-content/uploads/tweetdeck.jpg" alt="tweetdeck" width="800" height="513" /></p>
<h3><strong>ShareFire</strong></h3>
<p><strong> </strong><a href="http://www.sharefirereader.com/">Get it Here</a></p>
<p>Great XML reader/manager.  Entries can be viewed as HTML using the in-built browser.  Import/export functionality keeps you somewhat synced.</p>
<p><img class="alignnone size-full wp-image-135" title="sharefire" src="http://wtflash.com/wp-content/uploads/sharefire.jpg" alt="sharefire" width="800" height="592" /></p>
<h3><strong>Doc? Local Live Docs</strong></h3>
<p><strong> </strong><a href="http://www.airdoc.be/">Get it Here</a></p>
<p>I constantly use the Actionscript 3.0 Language and Component Reference and this app allows me to keep it readily available.  There are also plugins for Eclipse and Flash that allow you to easily access the app.</p>
<p><img class="alignnone size-full wp-image-136" title="doc" src="http://wtflash.com/wp-content/uploads/doc.jpg" alt="doc" width="800" height="645" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wtflash.com/2009/02/favorite-air-applications/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to Display Flash Content in Wordpress Using SWFObject</title>
		<link>http://www.wtflash.com/2009/02/how-to-display-flash-content-in-wordpress-using-swfobject/</link>
		<comments>http://www.wtflash.com/2009/02/how-to-display-flash-content-in-wordpress-using-swfobject/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 10:56:43 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
		
		<category><![CDATA[wordpress]]></category>

		<category><![CDATA[wordpress plugin]]></category>

		<guid isPermaLink="false">http://wtflash.com/?p=128</guid>
		<description><![CDATA[I use the SwfObj Wordpress plugin to display flash content on this site.  In case you&#8217;re wondering…
]]></description>
			<content:encoded><![CDATA[<p>I use the <a href="http://wordpress.org/extend/plugins/swfobj/">SwfObj Wordpress plugin</a> to display flash content on this site.  In case you&#8217;re wondering…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wtflash.com/2009/02/how-to-display-flash-content-in-wordpress-using-swfobject/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AS3 RandomTextField Class</title>
		<link>http://www.wtflash.com/2009/02/as3-randomtextfield-class/</link>
		<comments>http://www.wtflash.com/2009/02/as3-randomtextfield-class/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 10:38:20 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
		
		<category><![CDATA[actionscript 3.0]]></category>

		<guid isPermaLink="false">http://wtflash.com/?p=111</guid>
		<description><![CDATA[This ActionScript 3.0 class is inspired by Mathieu Badimon&#8217;s text effect on his Lab site.   The class extends TextField and utilizes a randomText property to trigger the randomized text effect.
For example,

var random_tf:RandomTextField = new RandomTextField;
random_tf.randomText = &#34;Hello WTFlash!&#34;;

There are some optional parameters you can set which allow you to control the number of random characters [...]]]></description>
			<content:encoded><![CDATA[
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="swfobj_1" width="700" height="100">
      <param name="movie" value="wp-content/uploads/swf/randomText.swf" />
      <!--[if !IE]>-->
      <object type="application/x-shockwave-flash" data="wp-content/uploads/swf/randomText.swf" width="700" height="100">
      <!--<![endif]-->
        <p>The Flash plugin is required to view this object.</p>
      <!--[if !IE]>-->
      </object>
      <!--<![endif]-->
    </object>

<p>This ActionScript 3.0 class is inspired by Mathieu Badimon&#8217;s text effect on his <a href="http://lab.mathieu-badimon.com/">Lab site</a>.   The class extends TextField and utilizes a <strong>randomText</strong> property to trigger the randomized text effect.</p>
<p>For example,</p>
<pre class="brush: as3;">
var random_tf:RandomTextField = new RandomTextField;
random_tf.randomText = &quot;Hello WTFlash!&quot;;
</pre>
<p>There are some optional parameters you can set which allow you to control the number of random characters to display per character of text, the placeholder string, and the delay interval between character swaps.</p>
<pre class="brush: as3;">
var random_tf:RandomTextField = new RandomTextField(4, &quot;*&quot;, 1000);
</pre>
<p>or</p>
<pre class="brush: as3;">
var random_tf:RandomTextField = new RandomTextField();
random_tf.numberRandomCharacters = 4;
random_tf.placeholder = &quot;*&quot;;
random_tf.swapDelay = 1000;
</pre>
<p>Here is the class (<em>NOTE:</em> I&#8217;m trying out <a href="http://www.monsterdebugger.com/">MonsterDebugger</a> in my workflow):</p>
<pre class="brush: as3;">
package com.jasonwoan.text {
/**
*	[RandomTextField]
*
*	@class			RandomTextField
*	@author    Jason Woan
*	@version		1.0.0
*	@date			Feb 7, 2009
*	@langversion	ActionScript 3.0
*	@playerversion	Flash Player 9
*
*	@history 1.0.0 (Feb 7, 2009) Created initial version of RandomTextField for AS3.
*/

//--------------------------------------------------
// IMPORT STATEMENTS
//--------------------------------------------------

import nl.demonsters.debugger.MonsterDebugger;

import flash.events.*;
import flash.text.*;
import flash.utils.Timer;

public class RandomTextField extends TextField {

//--------------------------------------------------
// PRIVATE STATIC PROPERTIES
//--------------------------------------------------

/**
*	The fully qualifed class name and path. This can be accessed from the class but the value
* 	can also be retrieved from the instance using the getter fullyQualifedClassPath
*/
private static const FULLY_QUALIFIED_CLASS_PATH: String = &quot;com.jasonwoan.text.RandomTextField&quot;;

//--------------------------------------------------
// PRIVATE PROPERTIES
//--------------------------------------------------
/**
*	A reference to this instance.
*/
private var _instance:RandomTextField;

/**
* 	The random text string
*/
private var _random_text:String;

/**
* 	The number of randomized characters to display per character
*/
private var _num_random:uint = 2;

/**
* 	A timer used to display the randomized characters
*/
private var _timer:Timer;

/**
* 	The placeholder character
*/
private var _placeholder:String = &quot;+&quot;;

/**
* 	A string of characters
*/
private var _characters:String = &quot;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYX01234567890.!@#$%&amp;&quot;;

/**
* 	An array of characters.
*/
private var _char_arr:Array;

/**
* 	The current index in the message
*/
private var _text_index:uint;

/**
* 	The current random index
*/
private var _random_index:uint;

/**
* 	Timer delay
*/
private var _timer_delay:Number = 34;

//--------------------------------------------------
// CONSTRUCTOR
//--------------------------------------------------
/**
*	Constructor
*/
public function RandomTextField(p_num_random:uint = 2, p_placeholder:String = &quot;+&quot;, p_swap_delay:Number = 34)
{
MonsterDebugger.trace(this, &quot;[&quot; + fullyQualifiedClassPath + &quot;] constructor:&quot;);

super();

_instance = this;
_num_random = p_num_random;
_placeholder = p_placeholder;
_timer_delay = p_swap_delay;

init();
}

//--------------------------------------------------
// GETTERS / SETTERS
//--------------------------------------------------
/**
*	Returns the fully qualified class path which includes the class package and class name as a string
*
*	@return	-	String representing the full class path.
*						For example: com.jasonwoan.text.RandomTextField
*/

public function get fullyQualifiedClassPath(): String
{
return  RandomTextField.FULLY_QUALIFIED_CLASS_PATH;
}

/**
*	Returns the random text string.
*	@return
*/
public function get randomText():String
{
return _instance._random_text;
}

/**
*	Sets the random text string
*	@param
*	@return	void
*/
public function set randomText(p_param:String):void
{
MonsterDebugger.trace(this,&quot;[&quot; + fullyQualifiedClassPath + &quot;.randomText]&quot;);

_random_text = p_param;
_text_index = 0;
_random_index = 0;

// start the randomization typing
_timer.stop();
_timer.reset();
_timer.start();
}

/**
*	Returns the delay between character swaps.
*	@return
*/
public function get swapDelay():Number
{
return _timer_delay;
}

/**
*	Sets the delay between character swaps.
*	@param
*	@return	void
*/
public function set swapDelay(p_param:Number):void
{
_timer_delay = p_param;
_timer.delay = _timer_delay;
}

/**
*	Returns the placeholder character.
*	@return
*/
public function get placeholder():String
{
return _placeholder;
}

/**
*	Sets the placeholder character.
*	@param
*	@return	void
*/
public function set placeholder(p_param:String):void
{
_placeholder = p_param;
}

/**
*	Returns the number of random characters to swap before the correct
*	character is displayed.
*	@return
*/
public function get numberRandomCharacters():uint
{
return _num_random;
}

/**
*	Sets the number of random characters to swap before the correct
*	character is displayed.
*	@param
*	@return	void
*/
public function set numberRandomCharacters(p_param:uint):void
{
_num_random = p_param;
}

//--------------------------------------------------
// EVENT HANDLERS
//--------------------------------------------------

/**
*	Invoked when the timer event is triggered.
*	@param	p_event	()
*	@return	void
*/
private function onTimer(p_event:TimerEvent):void
{
cycleCharacter();
}

//--------------------------------------------------
// PUBLIC METHODS
//--------------------------------------------------

/**
*	Destroys this object for garbage collection.
*
*	@return	void
*/

public function destroy():void
{
MonsterDebugger.trace(this,&quot;[&quot; + fullyQualifiedClassPath + &quot;.destroy]&quot;);

_instance = null;
}

//--------------------------------------------------
// PRIVATE METHODS
//--------------------------------------------------

/**
*	Initializes class instance.
*
*	@return	void
*/

private function init():void
{
MonsterDebugger.trace(this,&quot;[&quot; + fullyQualifiedClassPath + &quot;.init]&quot;);

_char_arr = _characters.split(&quot;&quot;);
_timer = new Timer(_timer_delay);
_timer.addEventListener(TimerEvent.TIMER, onTimer);
}

/**
*	Cycles through each character of the alphabet to find a matching character.
*	@return	void
*/
private function cycleCharacter():void
{
// check to see if the message index is less than the message length
if (_text_index == _random_text.length) {
_timer.stop();
return;
}

var s:String = &quot;&quot;;
var random_char:String;

// check for next
if (_random_index == _num_random) {
// set correct character
random_char = _random_text.charAt(_text_index);
// move on to next character
_random_index = 0;
_text_index++;
} else {
random_char = _char_arr[Math.floor(Math.random() * _char_arr.length)];
_random_index++;
}

// build string
for (var i:uint = 0; i &lt; _random_text.length; i++) {
if (i == _text_index) {
// add random character;
s += random_char;
} else
if (i &gt; _text_index) {
// add placeholder;
s += _placeholder;
} else
if (i &lt; _text_index) {
// add correct character
s += _random_text.charAt(i);
}
}

_instance.text = s;
}
}
}
</pre>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wtflash.com/2009/02/as3-randomtextfield-class/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AS3 BasicButton Class</title>
		<link>http://www.wtflash.com/2009/02/as3-basicbutton-class/</link>
		<comments>http://www.wtflash.com/2009/02/as3-basicbutton-class/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 07:40:18 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
		
		<category><![CDATA[actionscript 3.0]]></category>

		<category><![CDATA[class]]></category>

		<guid isPermaLink="false">http://wtflash.com/?p=91</guid>
		<description><![CDATA[Here&#8217;s a straightforward ActionScript 3.0 BasicButton class that I find pretty versatile for a number of unique button situations.  In the future, I will post a slightly more advanced version of this class.  To implement this class, set the base class of a movie clip in the library to point to the class [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a straightforward ActionScript 3.0 BasicButton class that I find pretty versatile for a number of unique button situations.  In the future, I will post a slightly more advanced version of this class.  To implement this class, set the base class of a movie clip in the library to point to the class location:</p>
<p><img class="alignnone size-full wp-image-92" title="basicbutton-1" src="http://wtflash.com/wp-content/uploads/basicbutton-1.jpg" alt="basicbutton-1" width="451" height="208" /></p>
<p>…and follow the timeline structure as follows (the &#8220;hit_mc&#8221; layer allows a hit sprite with an instance name &#8220;hit_mc&#8221; to be used as the button&#8217;s hit area):</p>
<p><img class="alignnone size-full wp-image-93" title="basicbutton-2" src="http://wtflash.com/wp-content/uploads/basicbutton-2.jpg" alt="basicbutton-2" width="825" height="154" /></p>
<p>It&#8217;s a good starting point for almost any button situation.  The flexibility of the timeline structure allows for complex animations and it can be extended to create more specific types of buttons, i.e. ToggleButton.</p>
<p>[cc lang="actionscript" tab_size="2" lines="100"]<br />
package com.jasonwoan.display {<br />
  /**<br />
  *  [BasicButton]<br />
  *<br />
  *  @class			BasicButton<br />
  *  @author		Jason Woan<br />
  *  @version		1.0.0<br />
  *  @date			March 3, 2008<br />
  *  @langversion	ActionScript 3.0<br />
  *  @playerversion	Flash Player 9<br />
  *<br />
  *  @history 1.0.0 (March 3, 2008) Created initial version of BasicButton for AS3.<br />
  */</p>
<p>  //&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
  // IMPORT STATEMENTS<br />
  //&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>  import flash.display.MovieClip;<br />
  import flash.display.Sprite;<br />
  import flash.events.*;</p>
<p>  public class BasicButton extends MovieClip {</p>
<p>    //&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
    // PUBLIC STATIC PROPERTIES<br />
    //&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
    /**<br />
     *	The fully qualifed class name and path. This can be instanceed from the class but the value<br />
     * 	can also be retrieved from the instance using the getter fullyQualifedClassPath<br />
     */<br />
    public static var FULLY_QUALIFIED_CLASS_PATH:String = &#8220;com.jasonwoan.display.BasicButton&#8221;;</p>
<p>    //&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
    // PRIVATE PROPERTIES<br />
    //&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
    /**<br />
     *	A reference to this instance.<br />
     */<br />
    protected var _instance:BasicButton;</p>
<p>    /**<br />
     *	A boolean flag indicating whether the button is on.<br />
     */<br />
    private var _is_on:Boolean = true;</p>
<p>    /**<br />
     * 	An integer id representing this button<br />
     */<br />
    private var _id:uint;</p>
<p>    /**<br />
     *	A boolean flag indicating that the button is selected<br />
     */<br />
    private var _is_selected:Boolean = false;</p>
<p>    //&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
    // CONSTRUCTOR<br />
    //&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
    /**<br />
     *	Constructor<br />
     */<br />
    public function BasicButton()<br />
    {<br />
      _instance = this;</p>
<p>      init();<br />
    }</p>
<p>    //&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
    // GETTERS / SETTERS<br />
    //&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
    /**<br />
     *	Returns the fully qualified class path which includes the class package and class name as a string<br />
		 *	@return	-	String representing the full class path.<br />
		 *						For example: com.jasonwoan.display.BasicButton<br />
		 */</p>
<p>		public function get fullyQualifiedClassPath():String<br />
		{<br />
			return  BasicButton.FULLY_QUALIFIED_CLASS_PATH;<br />
		}</p>
<p>		/**<br />
		 *	Returns the button&#8217;s on state.<br />
		 *	@return<br />
		 */</p>
<p>		public function get on():Boolean<br />
		{<br />
			return _is_on;<br />
		}</p>
<p>		/**<br />
		 *	Sets button&#8217;s on state.<br />
		 *	@param	p_param (Boolean)<br />
		 *	@return	void<br />
		 */</p>
<p>		public function set on(p_param:Boolean):void<br />
		{<br />
			_is_on = p_param;</p>
<p>			if (_is_on) {<br />
				_instance.mouseEnabled = true;<br />
				_instance.gotoAndStop(&#8221;up&#8221;);<br />
			} else {<br />
				_instance.mouseEnabled = false;<br />
				_instance.gotoAndStop(&#8221;off&#8221;);<br />
			}<br />
		}</p>
<p>		/**<br />
		 *	Returns the button&#8217;s id.<br />
		 *	@return<br />
		 */<br />
		public function get id():uint<br />
		{<br />
			return _id;<br />
		}</p>
<p>		/**<br />
		 *	Sets the button&#8217;s id.<br />
		 *	@param	p_param (uint)<br />
		 *	@return	void<br />
		 */<br />
		public function set id(p_param:uint):void<br />
		{<br />
			_id = p_param;<br />
		}</p>
<p>		/**<br />
		 *	Returns the button&#8217;s selected state.<br />
		 *	@return<br />
		 */<br />
		public function get selected():Boolean<br />
		{<br />
			return _is_selected;<br />
		}</p>
<p>		/**<br />
		 *	Sets the button&#8217;s selected state.<br />
		 *	@param<br />
		 *	@return	void<br />
		 */<br />
		public function set selected(p_param:Boolean):void<br />
		{<br />
			_is_selected = p_param;</p>
<p>			if (_is_selected) {<br />
				_instance.gotoAndStop(&#8221;over_hold&#8221;);<br />
				_instance.mouseEnabled = false;<br />
			} else {<br />
				_instance.gotoAndStop(&#8221;up&#8221;);<br />
				_instance.mouseEnabled = true;<br />
			}<br />
		}</p>
<p>		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
		// EVENT HANDLERS<br />
		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>		/**<br />
		 *	Invoked when the button is rolled over.<br />
		 *	@param	p_event	(MouseEvent)<br />
		 *	@return	void<br />
		 */<br />
		private function onButtonRollOver(p_event:MouseEvent):void<br />
		{<br />
			if (_is_on) {<br />
				_instance.gotoAndPlay(&#8221;over&#8221;);<br />
			} else {<br />
				_instance.gotoAndStop(&#8221;off&#8221;);<br />
			}<br />
		}</p>
<p>		/**<br />
		 *	Invoked when the button is rolled out.<br />
		 *	@param	p_event	(MouseEvent)<br />
		 *	@return	void<br />
		 */<br />
		private function onButtonRollOut(p_event:MouseEvent):void<br />
		{<br />
			if (_is_on) {<br />
				_instance.gotoAndPlay(&#8221;out&#8221;);<br />
			} else {<br />
				_instance.gotoAndStop(&#8221;off&#8221;);<br />
			}<br />
		}</p>
<p>		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
		// PUBLIC METHODS<br />
		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>		/**<br />
		 *	Destroys this object for garbage collection.<br />
		 *	@return	void<br />
		 */<br />
		public function destroy():void<br />
		{<br />
			destroyListeners();<br />
			_instance = null;<br />
		}</p>
<p>		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
		// PRIVATE METHODS<br />
		//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>		/**<br />
		 *	Initializes class instance.<br />
		 *	@return	void<br />
		 */<br />
		private function init():void<br />
		{<br />
			createListeners();</p>
<p>			_instance.buttonMode = true;<br />
			_instance.mouseChildren = false;<br />
			_instance.on = true;</p>
<p>			// check to see if hit area mc exists, if so assign it as the hit area<br />
			var hit:Sprite = _instance.getChildByName(&#8221;hit_mc&#8221;) as Sprite;<br />
			if (hit) {<br />
				_instance.hitArea = hit;<br />
			}<br />
		}</p>
<p>		/**<br />
		 *	Creates event listeners for the button.<br />
		 *	@return	void<br />
		 */<br />
		private function createListeners():void<br />
		{<br />
			_instance.addEventListener(MouseEvent.ROLL_OVER, onButtonRollOver);<br />
			_instance.addEventListener(MouseEvent.ROLL_OUT, onButtonRollOut);<br />
			_instance.addEventListener(MouseEvent.MOUSE_UP, onButtonMouseUp);<br />
		}</p>
<p>		/**<br />
		 *	Removes event listeners for the button.<br />
		 *	@return	void<br />
		 */<br />
		private function destroyListeners():void<br />
		{<br />
			_instance.removeEventListener(MouseEvent.ROLL_OVER, onButtonRollOver);<br />
			_instance.removeEventListener(MouseEvent.ROLL_OUT, onButtonRollOut);<br />
			_instance.removeEventListener(MouseEvent.MOUSE_UP, onButtonMouseUp);<br />
		}<br />
	}<br />
}</p>
<p>[/cc]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wtflash.com/2009/02/as3-basicbutton-class/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flash + Video Shape Detection = WOW!</title>
		<link>http://www.wtflash.com/2009/02/flash-video-shape-detection-wow/</link>
		<comments>http://www.wtflash.com/2009/02/flash-video-shape-detection-wow/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 18:49:48 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
		
		<category><![CDATA[websites]]></category>

		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://wtflash.com/?p=67</guid>
		<description><![CDATA[Ryan Stewart posted this amazing demo from MAX Japan.  I had a chance to play with the actual demo and it&#8217;s super impressive.  The shape detection library is available here.  If you have a webcam check it out!

]]></description>
			<content:encoded><![CDATA[<p>Ryan Stewart posted this <a href="http://blog.digitalbackcountry.com/2009/02/awesome-flash-demo-from-japan/">amazing demo</a> from MAX Japan.  I had a chance to play with the <a href="http://09.aid-dcc.com/">actual demo</a> and it&#8217;s super impressive.  The shape detection library is available <a href="http://www.libspark.org/wiki/saqoosha/FLARToolKit/en">here</a>.  If you have a webcam check it out!</p>
<p><img class="size-full wp-image-86" title="shapes" src="http://wtflash.com/wp-content/uploads/shapes.jpg" alt="shapes" width="556" height="515" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wtflash.com/2009/02/flash-video-shape-detection-wow/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Multiple Versions of Flash Player on Firefox</title>
		<link>http://www.wtflash.com/2009/02/multiple-versions-of-flash-player-on-firefox/</link>
		<comments>http://www.wtflash.com/2009/02/multiple-versions-of-flash-player-on-firefox/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 05:50:36 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
		
		<category><![CDATA[tools]]></category>

		<category><![CDATA[flash player]]></category>

		<category><![CDATA[flash switcher]]></category>

		<category><![CDATA[powerpc]]></category>

		<guid isPermaLink="false">http://wtflash.com/?p=46</guid>
		<description><![CDATA[For us who still use a PowerPC there is a way to utilize the new Flash Player 10 and keep your Flash Player 9 Debug Version for…well, debugging.   Flash Switcher is a Firefox extension that allows you to switch between different versions of Flash Player.   The key to getting the different versions of FP [...]]]></description>
			<content:encoded><![CDATA[<p>For us who still use a PowerPC there is a way to utilize the new Flash Player 10 and keep your Flash Player 9 Debug Version for…well, debugging.   <a href="http://www.sephiroth.it/firefox/flash_switcher/">Flash Switcher</a> is a Firefox extension that allows you to switch between different versions of Flash Player.   The key to getting the different versions of FP working together is to <a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_14157&amp;sliceId=1">uninstall</a> each version after you save it to Flash Switcher.</p>
<ol>
<li>Install the <a href="http://www.sephiroth.it/firefox/flash_switcher/">Flash Switcher</a> extension.</li>
<li>Save your current Flash Player version.  Firefox &gt; Tools &gt; Flash Switcher &gt; Save as…</li>
<li>Run the Flash Player <a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_14157&amp;sliceId=1">uninstaller</a>.</li>
<li>Install a new version of Flash Player.</li>
<li>Repeat Step 2 &amp; 3.</li>
<li>Select a Flash Player to run using Flash Switcher.</li>
</ol>
<p>That&#8217;s it!  Hopefully, FP10 Debug for PPC will be released soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wtflash.com/2009/02/multiple-versions-of-flash-player-on-firefox/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tools That Make Your Workflow…Work</title>
		<link>http://www.wtflash.com/2009/02/discovering-new-workflows-and-tools-that-make-our-jobs-easier/</link>
		<comments>http://www.wtflash.com/2009/02/discovering-new-workflows-and-tools-that-make-our-jobs-easier/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 04:25:54 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
		
		<category><![CDATA[tools]]></category>

		<category><![CDATA[eclipse]]></category>

		<category><![CDATA[flash tracer]]></category>

		<category><![CDATA[subclipse]]></category>

		<guid isPermaLink="false">http://wtflash.com/?p=38</guid>
		<description><![CDATA[I&#8217;m always interested in learning how people work.  What tools do you use in your day-to-day grind as a designer or developer?  Here are some I can&#8217;t live without:

Eclipse (Ganymede Release) w/ the FDT 3 Plugin.  I love the templating feature of the FDT3 editor.  I will post a few of my [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m always interested in learning how people work.  What tools do you use in your day-to-day grind as a designer or developer?  Here are some I can&#8217;t live without:</p>
<ul>
<li><a href="http://eclipse.org">Eclipse</a> (Ganymede Release) w/ the <a href="http://fdt.powerflasher.com/">FDT 3 Plugin</a>.  I love the templating feature of the FDT3 editor.  I will post a few of my commonly used templates.</li>
<li><a href="http://subclipse.tigris.org/">Subclipse Plugin</a> for version control.</li>
<li><a href="http://www.adobe.com/support/flashplayer/downloads.html">Flash Player 9 Debugger</a>. Yes, I&#8217;m still using a PowerPC.</li>
<li><a href="http://www.sephiroth.it/firefox/flashtracer/">Flash Tracer</a> Firefox extension</li>
<li>OS X Terminal command file tracer.  Add the following to a text file and save it as &#8220;debug.command&#8221;.  Fire it up in Terminal to read trace statements.[cc lang="php" tab_size="2" lines="40"]<br />
&gt; /Users/USERNAME/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt<br />
clear<br />
echo Terminal is observing the Flash log file. Type Ctrl-c to exit.<br />
echo<br />
tail -f /Users/USERNAME/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt<br />
[/cc]</li>
<li><a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/index.html">Actionscript 3.0 Language and Components Reference</a>.  My development bible.</li>
<li><a href="http://airdoc.be/home/">Doc? Air Local LiveDocs</a>.  An AIR application that lets you peruse through reference docs.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.wtflash.com/2009/02/discovering-new-workflows-and-tools-that-make-our-jobs-easier/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to Display ActionScript Code in WordPress</title>
		<link>http://www.wtflash.com/2009/02/how-to-display-actionscript-code-in-wordpress/</link>
		<comments>http://www.wtflash.com/2009/02/how-to-display-actionscript-code-in-wordpress/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 23:16:01 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
		
		<category><![CDATA[wordpress]]></category>

		<category><![CDATA[actionscript]]></category>

		<category><![CDATA[code]]></category>

		<category><![CDATA[highlighting]]></category>

		<category><![CDATA[plugin]]></category>

		<category><![CDATA[syntac]]></category>

		<guid isPermaLink="false">http://wtflash.com/?p=5</guid>
		<description><![CDATA[This being my first personal weblog I expected to run into some walls.  The first hurdle (although a short  one) was figuring out how to easily display source code in posts.  After some googling I came across this:
CodeColorer
Installation is straightforward.  Here is a sample of what you get:
[cc lang="actionscript" tab_size="2" lines="40"]
// actionscript code
var mc:MovieClip = [...]]]></description>
			<content:encoded><![CDATA[<p>This being my first personal weblog I expected to run into some walls.  The first hurdle (although a short  one) was figuring out how to easily display source code in posts.  After some googling I came across this:</p>
<p><a href="http://wordpress.org/extend/plugins/codecolorer/">CodeColorer</a></p>
<p><a href="http://wordpress.org/extend/plugins/codecolorer/installation/">Installation</a> is straightforward.  Here is a sample of what you get:</p>
<p>[cc lang="actionscript" tab_size="2" lines="40"]<br />
// actionscript code<br />
var mc:MovieClip = new MovieClip();<br />
if (mc.x == 0) {<br />
  mc.x = 100;<br />
}<br />
[/cc]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wtflash.com/2009/02/how-to-display-actionscript-code-in-wordpress/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
