hoolagon
November 25th, 2008, 01:05 PM
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):Bool ean
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):Rec tangle
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):Recta ngle
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
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):Bool ean
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):Rec tangle
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):Recta ngle
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