Download this file · Not for commercial use
  1. package
  2. {
  3. public class Example extends Sprite
  4. {
  5. public function Example()
  6. {
  7. var sprite: AS2Sprite = new AS2Sprite;
  8. addChild( sprite.toSprite() );
  9. sprite.clip = new AS2Sprite;
  10. sprite.graphics.beginFill( 0xff0000, 1 );
  11. sprite.graphics.drawCircle( 0, 0, 10 );
  12. sprite.graphics.endFill();
  13. sprite._x = 10;
  14. sprite._y = 10;
  15. sprite.clip.graphics.beginFill( 0x00ff00, 1 );
  16. sprite.clip.graphics.drawCircle( 0, 0, 10 );
  17. sprite.clip.graphics.endFill();
  18. sprite.clip._x = 50;
  19. sprite.clip._y = 50;
  20. sprite.clip.clip2 = new AS2Sprite;
  21. sprite.clip.clip2.graphics.beginFill( 0x0000ff, 1 );
  22. sprite.clip.clip2.graphics.drawCircle( 0, 0, 10 );
  23. sprite.clip.clip2.graphics.endFill();
  24. sprite.clip.clip2._x = 50;
  25. sprite.clip.clip2._y = 50;
  26. }
  27. }
  28. }
  29.  
  30. import flash.utils.Proxy;
  31. import flash.utils.flash_proxy;
  32. import flash.display.DisplayObject;
  33. import flash.display.DisplayObjectContainer;
  34. import flash.display.Sprite;
  35.  
  36. dynamic class AS2Sprite extends Proxy
  37. {
  38. protected var sprite: AS2SpriteHandle;
  39.  
  40. public function AS2Sprite()
  41. {
  42. sprite = new AS2SpriteHandle( this );
  43. }
  44. flash_proxy override function callProperty( name: *, ... args ): *
  45. {
  46. return sprite[ name.toString() ].apply( sprite, args );
  47. }
  48. flash_proxy override function getProperty( name: * ): *
  49. {
  50. if ( sprite.hasOwnProperty( name.toString() ) )
  51. {
  52. return sprite[ name.toString() ];
  53. }
  54. else
  55. {
  56. var displayObject: DisplayObject = sprite.getChildByName( name.toString() );
  57. return ( displayObject is AS2SpriteHandle ) ? ( displayObject as AS2SpriteHandle ).handler : displayObject;
  58. }
  59. }
  60. flash_proxy override function setProperty( name: *, value: * ): void
  61. {
  62. if ( sprite.hasOwnProperty( name.toString() ) )
  63. {
  64. sprite[ name.toString() ] = value;
  65. return;
  66. }
  67. switch ( name.toString() )
  68. {
  69. case '_x':
  70. sprite.x = value;
  71. break;
  72. case '_y':
  73. sprite.y = value;
  74. break;
  75. case '_xscale':
  76. sprite.scaleX = value;
  77. break;
  78. case '_yscale':
  79. sprite.scaleY = value;
  80. break;
  81. default:
  82. var child: DisplayObject = sprite.getChildByName( name );
  83. var nextChild: DisplayObject = ( value is AS2Sprite ) ? ( value as AS2Sprite ).toDisplayObject() : value;
  84. if ( child != null )
  85. {
  86. if ( nextChild === child )
  87. {
  88. return;
  89. }
  90. else
  91. {
  92. sprite.removeChild( child );
  93. }
  94. }
  95. nextChild.name = name;
  96. sprite.addChild( nextChild );
  97. }
  98. }
  99. flash_proxy override function deleteProperty( name: * ): Boolean
  100. {
  101. if ( sprite.hasOwnProperty( name.toString() ) )
  102. {
  103. return false;
  104. }
  105. switch ( name.toString() )
  106. {
  107. case '_x':
  108. case '_y':
  109. case '_xscale':
  110. case '_yscale':
  111. return false;
  112. default:
  113. var child: DisplayObject = sprite.getChildByName( name.toString() );
  114. if ( child != null )
  115. {
  116. sprite.removeChild( child );
  117. return true;
  118. }
  119. return false;
  120. }
  121. }
  122. public function toDisplayObject(): DisplayObject
  123. {
  124. return sprite;
  125. }
  126. public function toDisplayObjectContainer(): DisplayObjectContainer
  127. {
  128. return sprite;
  129. }
  130. public function toSprite(): Sprite
  131. {
  132. return sprite;
  133. }
  134. }
  135.  
  136. class AS2SpriteHandle extends Sprite
  137. {
  138. protected var _handler: AS2Sprite;
  139. public function AS2SpriteHandle( handler: AS2Sprite )
  140. {
  141. _handler = handler;
  142. }
  143. public function get handler(): AS2Sprite
  144. {
  145. return _handler;
  146. }
  147. }
Unless otherwise expressly stated, all original material of whatever nature created by Joa D. Ebert and included in the je2050.de weblog and any related pages, including the weblog's archives, is licensed under a Creative Commons License.
Parsed in 0.138 seconds, using GeSHi 1.0.7.7