3

Actionscript 3 では、メソッドをオブジェクトに動的に追加できました。以下のコードが好き

var s:Sprite = new Sprite()
var f:Function = function(){this.graphic.clear()}
s.clean = f

s の clean 関数を使用して別の Sprite インスタンスを作成できますか?

4

1 に答える 1

2

Sprite のプロトタイプを使用して可能です:

Sprite.prototype.clean = function():void { trace("works"); }
var s1:Sprite = new Sprite();
var s2:Sprite = new Sprite();
s1["clean"]();
s2["clean"]();

もちろん、これは作成するスプライトのすべてのインスタンスにクリーンを追加します。それが必要ない場合は、スプライトを作成する関数を作成してそれを使用することができます。

function createSprite():Sprite
{
   var s:Sprite = new Sprite();
   var f:Function = function(){this.graphic.clear()}
   s.clean = f ;
   return s;
}

Sprite クラスを変更したくない場合、他のオプションは継承であり、この新しいクラスに clean メソッドを追加します。

public class MySprite extends Sprite
{
   public function clean():void
   {
      this.graphic.clear();
   }
}

var s1:MySprite = new MySprite();
s1.clean();
于 2012-10-11T15:09:02.037 に答える