package
{
public class Example extends Sprite
{
public function Example()
{
var sprite: AS2Sprite = new AS2Sprite;
addChild( sprite.toSprite() );
-
sprite.clip = new AS2Sprite;
-
sprite.graphics.beginFill( 0xff0000, 1 );
sprite.graphics.drawCircle( 0, 0, 10 );
sprite.graphics.endFill();
sprite._x = 10;
sprite._y = 10;
-
sprite.clip.graphics.beginFill( 0x00ff00, 1 );
sprite.clip.graphics.drawCircle( 0, 0, 10 );
sprite.clip.graphics.endFill();
sprite.clip._x = 50;
sprite.clip._y = 50;
-
sprite.clip.clip2 = new AS2Sprite;
sprite.clip.clip2.graphics.beginFill( 0x0000ff, 1 );
sprite.clip.clip2.graphics.drawCircle( 0, 0, 10 );
sprite.clip.clip2.graphics.endFill();
sprite.clip.clip2._x = 50;
sprite.clip.clip2._y = 50;
}
}
}
import flash.utils.Proxy;
import flash.utils.flash_proxy;
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.display.Sprite;
dynamic class AS2Sprite extends Proxy
{
protected var sprite: AS2SpriteHandle;
public function AS2Sprite()
{
sprite = new AS2SpriteHandle( this );
}
-
flash_proxy override function callProperty( name: *, ... args ): *
{
return sprite[ name.toString() ].apply( sprite, args );
}
-
flash_proxy override function getProperty( name: * ): *
{
if ( sprite.hasOwnProperty( name.toString() ) )
{
return sprite[ name.toString() ];
}
else
{
var displayObject: DisplayObject = sprite.getChildByName( name.toString() );
return ( displayObject is AS2SpriteHandle ) ? ( displayObject as AS2SpriteHandle ).handler : displayObject;
}
}
-
flash_proxy override function setProperty( name: *, value: * ): void
{
if ( sprite.hasOwnProperty( name.toString() ) )
{
sprite[ name.toString() ] = value;
return;
}
-
switch ( name.toString() )
{
case '_x':
sprite.x = value;
break;
-
case '_y':
sprite.y = value;
break;
-
case '_xscale':
sprite.scaleX = value;
break;
-
case '_yscale':
sprite.scaleY = value;
break;
-
default:
var child: DisplayObject = sprite.getChildByName( name );
var nextChild: DisplayObject = ( value is AS2Sprite ) ? ( value as AS2Sprite ).toDisplayObject() : value;
-
if ( child != null )
{
if ( nextChild === child )
{
return;
}
else
{
sprite.removeChild( child );
}
}
-
nextChild.name = name;
sprite.addChild( nextChild );
}
}
-
flash_proxy override function deleteProperty( name: * ): Boolean
{
if ( sprite.hasOwnProperty( name.toString() ) )
{
return false;
}
-
switch ( name.toString() )
{
case '_x':
case '_y':
case '_xscale':
case '_yscale':
return false;
-
default:
var child: DisplayObject = sprite.getChildByName( name.toString() );
-
if ( child != null )
{
sprite.removeChild( child );
return true;
}
-
return false;
}
}
-
public function toDisplayObject(): DisplayObject
{
return sprite;
}
-
public function toDisplayObjectContainer(): DisplayObjectContainer
{
return sprite;
}
-
public function toSprite(): Sprite
{
return sprite;
}
}
class AS2SpriteHandle extends Sprite
{
protected var _handler: AS2Sprite;
-
public function AS2SpriteHandle( handler: AS2Sprite )
{
_handler = handler;
}
-
public function get handler(): AS2Sprite
{
return _handler;
}
}