PDA

View Full Version : interface abstraction for Sprite?



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

creatify
November 25th, 2008, 10:49 PM
Why are you choosing a Sprite as the starting point - just out of curiosity? As far as an interface to implement - you'll probably have to follow the inheritance chance up from a Sprite to find a similar Object that implements an interface. There is the IBitmapDrawable and the IEventDispatcher interfaces that might be a starting point. I'm not quite sure what your goal is I guess.

But, in your case, could you not just extend Sprite (vs. implementing an interface)? If you need to customize methods that already exist or just avoid direct access to methods, you can override existing Sprite methods in your Sub Class.

?