Dynamically adding properties to class via prototype for AS3

I tried rewriting Senocular’s AlignmentProperties that alter the prototype of a MovieClip for AS1 and AS2 in AS3… (Basically it adds a top, left, bottom, right, centerY, centerX property to all MovieClips so you can align them regardless of their registration point)

Now, I know you (senocular) say prototypes are not typically used anymore for AS3 but they are still there in case you need them. I think this utility could be pretty useful. What are your thoughts on how a property could be dynamically added to a class in AS3?

The usage would look something like this:
import AlignmentProperties;
new AlignmentProperties(“flash.display.MovieClip”);// or some other DisplayObject or special class
trace(my_mc.top);// traces the top of a movie clip regardless of the registration
my_mc.top=0; //aligns the top of a movieclip to 0 regardless of the registration

But ran into a snag adding properties to a class via prototype.

Here is my class…

package 
{
	/////////////////////////////////////////////////////////////////////////////////
	///  Written by Elliot Geno >> March 3, 2009
	///  Utility to add alignment properties to a developer-defined class.
	///  Based off an idea presented by Senocular but rewitten for AS3
	///
	///   USAGE:
	///   import AlignmentProperties;
	///   new AlignmentProperties("flash.display.MovieClip");
	///   trace(my_mc.top);//traces the top of any movieclip
	///
	///   import AlignmentProperties;
	///   new AlignmentProperties("com.some.other.SpecialClass");
	///   trace(special_mc.top);//traces the top of any SpecialClass
	///
	/////////////////////////////////////////////////////////////////////////////////
	import flash.events.Event;
	import flash.display.DisplayObject;
	import flash.geom.Rectangle;
	import flash.utils.getDefinitionByName;
	//
	public dynamic class AlignmentProperties  extends DisplayObject
	{
		public var ignoreStrokes:Boolean=false; //// !! This is handy to choose whether or not you want to use getRect or getBounds
		public var myObject:DisplayObject;
		//
		public function AlignmentProperties(myClass:String)
		{
			var classRef:Class=getDefinitionByName(myClass) as Class;
			///
			classRef.prototype.top=top;//??How do you add properties to a prototype in AS3???
			classRef.prototype.blah=5;//variables and functions work fine.
		}
		////////////////////////
		//    TOP
		public function get top():Number
		{
			var r:Rectangle=getRectangle();
			return r.y + this.y;
		}
		public function set top(value:Number):void
		{
			var r:Rectangle=getRectangle();
			this.y=value-r.y;
		}
		////////////////////////
		//    BOTTOM
		public function get bottom():Number
		{
			var r:Rectangle=getRectangle();
			return r.y + this.y + r.height;
		}
		public function set bottom(value:Number):void
		{
			var r:Rectangle=getRectangle();
			this.y=value-r.y-r.height;
		}
		////////////////////////
		//    LEFT
		public function get left():Number
		{
			var r:Rectangle=getRectangle();
			return r.x + this.x;
		}
		public function set left(value:Number):void
		{
			var r:Rectangle=getRectangle();
			this.x=value-r.x;
		}
		////////////////////////
		//    RIGHT
		public function get right():Number
		{
			var r:Rectangle=getRectangle();
			return r.x + this.x + r.width;
		}
		public function set right(value:Number):void
		{
			var r:Rectangle=getRectangle();
			this.x=value-r.x-r.width;
		}
		////////////////////////
		//    CENTER Y
		public function get centerY():Number
		{
			var r:Rectangle=getRectangle();
			return r.y + this.y + r.height * .5;
		}
		public function set centerY(value:Number):void
		{
			var r:Rectangle=getRectangle();
			this.y=(value-(r.height*.5))-r.y;
		}
		////////////////////////
		//    CENTER X
		public function get centerX():Number
		{
			var r:Rectangle=getRectangle();
			return r.x + this.x + r.width * .5;
		}
		public function set centerX(value:Number):void
		{
			var r:Rectangle=getRectangle();
			this.x=(value-(r.width*.5))-r.x;
		}
		////////////////////////
		//    RETURN RECTANGLE
		private function getRectangle():Rectangle
		{
			var r:Rectangle;
			if (ignoreStrokes) {
				r= this.getRect(this);
			} else {
				r= this.getBounds(this);
			}
			return r;
		}
	}
}