A few weeks ago I made a quick SWF showing Polar Distortion. I said then that I should probably make a class out of it. Finally got around to doing that. The original file was just BitmapData -> BitmapData. The class uses any DisplayObject as an input. It gives you a few other parameters such as inner radius, outer radius, seam angle, and an invert feature, which lets the top of the input image be in the center of the circle instead of the outside.
Here’s an example of it in use, showing how it can be used on a raw text field. The text field is editable, just hit refresh after you type.
[kml_flashembed movie=“https://www.bit-101.com/2003/wp-content/uploads/2008/03/polartest.swf” width=“600″ height=“600″ /]
Again, this is not just text, but any Bitmap, MovieClip, Sprite, TextField or any other DisplayObject. Usage is as so:
[as]var pd:PolarDistort = new PolarDistort(mytext, 100, 0, false);
pd.render(bmpd);[/as]
The constructor signature is:
[as]public function PolarDistort(sourceObject:DisplayObject, innerRadius:Number = 0, outerRadius:Number = 0, inverted:Boolean = false)[/as]
If outer radius is 0, it will draw the full radius of the output BitmapData.
The render method takes a BitmapData.
Download the class here:
It’s well commented and documented, so you should be up to speed pretty quickly.
Note, although I’ve optimized this where I could, it’s never going to be good for animation. It’s a draw once and sit back and admire type of thing. Still think it’s pretty cool though.
Here is regular distort and inverted distort on the exact same photo for reference:

