Interface abstraction for Sprite?

I’m using flash AS 3.0 and I’m trying to extend the Sprite class to create some custom components.

As I would like to keep the software engine separate from the display skin so that the skin can be changed independently from the engine code, I would like to hide the custom component behind an interface.

The problem I have is that the Sprite does not have an Interface abstraction for me to extend and add additional features.

I would prefer to not have to use dynamic casting.

This seems to me to be a common problem and I was wondering if any one has create an Interface for the Sprite, detailing all the function/properties it implements.

If so I could simply extend this interface with the features I want to add.

I started doing this myself however realised that this was quite an undertaking given all the property/methods it implements/inherits, see the list below:-


  accessibilityProperties : AccessibilityProperties
  The current accessibility options for this display object.
  DisplayObject
                                  alpha : Number
  Indicates the alpha transparency value of the object specified.
  DisplayObject
                                  blendMode : String
  A value from the BlendMode class that specifies which blend mode to use.
  DisplayObject
                                  blendShader : Shader
  [write-only] Sets a shader that is used for blending the foreground and background.
  DisplayObject
                                  buttonMode : Boolean
  Specifies the button mode of this sprite.
  Sprite
                                  cacheAsBitmap : Boolean
  If set to true, Flash Player or Adobe AIR caches an internal bitmap representation of the display object.
  DisplayObject
                                  constructor : Object
  A reference to the class object or constructor function for a given object instance.
  Object
                                  contextMenu : NativeMenu
  Specifies the context menu associated with this object.
  InteractiveObject
                                  doubleClickEnabled : Boolean
  Specifies whether the object receives doubleClick events.
  InteractiveObject
                                  dropTarget : DisplayObject
  [read-only] Specifies the display object over which the sprite is being dragged, or on which the sprite was dropped.
  Sprite
                                  filters : Array
  An indexed array that contains each filter object currently associated with the display object.
  DisplayObject
                                  focusRect : Object
  Specifies whether this object displays a focus rectangle.
  InteractiveObject
                                  graphics : Graphics
  [read-only] Specifies the Graphics object that belongs to this sprite where vector drawing commands can occur.
  Sprite
                                  height : Number
  Indicates the height of the display object, in pixels.
  DisplayObject
                                  hitArea : Sprite
  Designates another sprite to serve as the hit area for a sprite.
  Sprite
                                  loaderInfo : LoaderInfo
  [read-only] Returns a LoaderInfo object containing information about loading the file to which this display object belongs.
  DisplayObject
                                  mask : DisplayObject
  The calling display object is masked by the specified mask object.
  DisplayObject
                                  mouseChildren : Boolean
  Determines whether or not the children of the object are mouse enabled.
  DisplayObjectContainer
                                  mouseEnabled : Boolean
  Specifies whether this object receives mouse messages.
  InteractiveObject
                                  mouseX : Number
  [read-only] Indicates the x coordinate of the mouse position, in pixels.
  DisplayObject
                                  mouseY : Number
  [read-only] Indicates the y coordinate of the mouse position, in pixels.
  DisplayObject
                                  name : String
  Indicates the instance name of the DisplayObject.
  DisplayObject
                                  numChildren : int
  [read-only] Returns the number of children of this object.
  DisplayObjectContainer
                                  opaqueBackground : Object
  Specifies whether the display object is opaque with a certain background color.
  DisplayObject
                                  parent : DisplayObjectContainer
  [read-only] Indicates the DisplayObjectContainer object that contains this display object.
  DisplayObject
                                  prototype : Object
  [static] A reference to the prototype object of a class or function object.
  Object
                                  root : DisplayObject
  [read-only] For a display object in a loaded SWF file, the root property is the top-most display object in the portion of the display list's tree structure represented by that SWF file.
  DisplayObject
                                  rotation : Number
  Indicates the rotation of the DisplayObject instance, in degrees, from its original orientation.
  DisplayObject
                                  rotationX : Number
  Indicates the x-axis rotation of the DisplayObject instance, in degrees, from its original orientation relative to the 3D parent container.
  DisplayObject
                                  rotationY : Number
  Indicates the y-axis rotation of the DisplayObject instance, in degrees, from its original orientation relative to the 3D parent container.
  DisplayObject
                                  rotationZ : Number
  Indicates the z-axis rotation of the DisplayObject instance, in degrees, from its original orientation relative to the 3D parent container.
  DisplayObject
                                  scale9Grid : Rectangle
  The current scaling grid that is in effect.
  DisplayObject
                                  scaleX : Number
  Indicates the horizontal scale (percentage) of the object as applied from the registration point.
  DisplayObject
                                  scaleY : Number
  Indicates the vertical scale (percentage) of an object as applied from the registration point of the object.
  DisplayObject
                                  scaleZ : Number
  Indicates the depth scale (percentage) of an object as applied from the registration point of the object.
  DisplayObject
                                  scrollRect : Rectangle
  The scroll rectangle bounds of the display object.
  DisplayObject
                                  soundTransform : SoundTransform
  Controls sound within this sprite.
  Sprite
                                  stage : Stage
  [read-only] The Stage of the display object.
  DisplayObject
                                  tabChildren : Boolean
  Determines whether the children of the object are tab enabled.
  DisplayObjectContainer
                                  tabEnabled : Boolean
  Specifies whether this object is in the tab order.
  InteractiveObject
                                  tabIndex : int
  Specifies the tab ordering of objects in a SWF file.
  InteractiveObject
                                  textSnapshot : TextSnapshot
  [read-only] Returns a TextSnapshot object for this DisplayObjectContainer instance.
  DisplayObjectContainer
                                  transform : Transform
  An object with properties pertaining to a display object's matrix, color transform, and pixel bounds.
  DisplayObject
                                  useHandCursor : Boolean
  A Boolean value that indicates whether the pointing hand (hand cursor) appears when the mouse rolls over a sprite in which the buttonMode property is set to true.
  Sprite
                                  visible : Boolean
  Whether or not the display object is visible.
  DisplayObject
                                  width : Number
  Indicates the width of the display object, in pixels.
  DisplayObject
                                  x : Number
  Indicates the x coordinate of the DisplayObject instance relative to the local coordinates of the parent DisplayObjectContainer.
  DisplayObject
                                  y : Number
  Indicates the y coordinate of the DisplayObject instance relative to the local coordinates of the parent DisplayObjectContainer.
  DisplayObject
                                  z : Number
  Indicates the z coordinate position along the z-axis of the DisplayObject instance relative to the 3D parent container.
  DisplayObject
  Public Methods
   Hide Inherited Public Methods
                  Method               Defined By
                                  
  Sprite()
  Creates a new Sprite instance.
  Sprite
                                  
  addChild(child:DisplayObject):DisplayObject
  Adds a child DisplayObject instance to this DisplayObjectContainer instance.
  DisplayObjectContainer
                                  
  addChildAt(child:DisplayObject, index:int):DisplayObject
  Adds a child DisplayObject instance to this DisplayObjectContainer instance.
  DisplayObjectContainer
                                  
  addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
  Registers an event listener object with an EventDispatcher object so that the listener receives notification of an event.
  EventDispatcher
                                  
  areInaccessibleObjectsUnderPoint(point:Point):Boolean
  Indicates whether the security restrictions would cause any display objects to be omitted from the list returned by calling the DisplayObjectContainer.getObjectsUnderPoint() method with the specified point point.
  DisplayObjectContainer
                                  
  contains(child:DisplayObject):Boolean
  Determines whether the specified display object is a child of the DisplayObjectContainer instance or the instance itself.
  DisplayObjectContainer
                                  
  dispatchEvent(event:Event):Boolean
  Dispatches an event into the event flow.
  EventDispatcher
                                  
  getBounds(targetCoordinateSpace:DisplayObject):Rectangle
  Returns a rectangle that defines the area of the display object relative to the coordinate system of the targetCoordinateSpace object.
  DisplayObject
                                  
  getChildAt(index:int):DisplayObject
  Returns the child display object instance that exists at the specified index.
  DisplayObjectContainer
                                  
  getChildByName(name:String):DisplayObject
  Returns the child display object that exists with the specified name.
  DisplayObjectContainer
                                  
  getChildIndex(child:DisplayObject):int
  Returns the index position of a child DisplayObject instance.
  DisplayObjectContainer
                                  
  getObjectsUnderPoint(point:Point):Array
  Returns an array of objects that lie under the specified point and are children (or grandchildren, and so on) of this DisplayObjectContainer instance.
  DisplayObjectContainer
                                  
  getRect(targetCoordinateSpace:DisplayObject):Rectangle
  Returns a rectangle that defines the boundary of the display object, based on the coordinate system defined by the targetCoordinateSpace parameter, excluding any strokes on shapes.
  DisplayObject
                                  
  globalToLocal(point:Point):Point
  Converts the point object from the Stage (global) coordinates to the display object's (local) coordinates.
  DisplayObject
                                  
  globalToLocal3D(point:Point):Vector3D
  Converts a two-dimensional point from the Stage (global) coordinates to a three-dimensional display object's (local) coordinates.
  DisplayObject
                                  
  hasEventListener(type:String):Boolean
  Checks whether the EventDispatcher object has any listeners registered for a specific type of event.
  EventDispatcher
                                  
  hasOwnProperty(name:String):Boolean
  Indicates whether an object has a specified property defined.
  Object
                                  
  hitTestObject(obj:DisplayObject):Boolean
  Evaluates the bounding box of the display object to see if it overlaps or intersects with the bounding box of the obj display object.
  DisplayObject
                                  
  hitTestPoint(x:Number, y:Number, shapeFlag:Boolean = false):Boolean
  Evaluates the display object to see if it overlaps or intersects with the point specified by the x and y parameters.
  DisplayObject
                                  
  isPrototypeOf(theClass:Object):Boolean
  Indicates whether an instance of the Object class is in the prototype chain of the object specified as the parameter.
  Object
                                  
  local3DToGlobal(point3d:Vector3D):Point
  Converts a three-dimensional point of the three-dimensional display object's (local) coordinates to a two-dimensional point in the Stage (global) coordinates.
  DisplayObject
                                  
  localToGlobal(point:Point):Point
  Converts the point object from the display object's (local) coordinates to the Stage (global) coordinates.
  DisplayObject
                                  
  propertyIsEnumerable(name:String):Boolean
  Indicates whether the specified property exists and is enumerable.
  Object
                                  
  removeChild(child:DisplayObject):DisplayObject
  Removes the specified child DisplayObject instance from the child list of the DisplayObjectContainer instance.
  DisplayObjectContainer
                                  
  removeChildAt(index:int):DisplayObject
  Removes a child DisplayObject from the specified index position in the child list of the DisplayObjectContainer.
  DisplayObjectContainer
                                  
  removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
  Removes a listener from the EventDispatcher object.
  EventDispatcher
                                  
  setChildIndex(child:DisplayObject, index:int):void
  Changes the position of an existing child in the display object container.
  DisplayObjectContainer
                                  
  setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
  Sets the availability of a dynamic property for loop operations.
  Object
                                  
  startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void
  Lets the user drag the specified sprite.
  Sprite
                                  
  stopDrag():void
  Ends the startDrag() method.
  Sprite
                                  
  swapChildren(child1:DisplayObject, child2:DisplayObject):void
  Swaps the z-order (front-to-back order) of the two specified child objects.
  DisplayObjectContainer
                                  
  swapChildrenAt(index1:int, index2:int):void
  Swaps the z-order (front-to-back order) of the child objects at the two specified index positions in the child list.
  DisplayObjectContainer
                                  
  toString():String
  Returns the string representation of the specified object.
  Object
                                  
  valueOf():Object
  Returns the primitive value of the specified object.
  Object
                                  
  willTrigger(type:String):Boolean
  Checks whether an event listener is registered with this EventDispatcher object or any of its ancestors for the specified event type.
  EventDispatcher