2012-03-06 16 views
0

"superClass"をサブクラス化し、そのいずれかの関数をオーバーライドしたいと考えています。swfからロードされたクラスをサブクラス化するには

public class superClass { 
    protected function f1(...) : Boolean {...} 
    protected function f2(...) : Boolean {...} 
    ... 
    protected function f100(...) : Boolean {...} 
} 
public class subClass extends superClass { 
    // override f1 in the subclass 
    protected override function f1(...) : Boolean {...} 
} 

問題は、「スーパークラス」はswfファイルからロードされていることです。プロジェクトのクラス定義への参照がありません。下のようなことをする方法はありますか?

public class subClass { 
    private var superClassObject: Object; 

    // construct from an instance of superClass 
    public function subClass (s : Object) { 
     superClassObject = s; 
    } 

    private function myF1(...) : Boolean {...} 

    override InvokeFunction (fname: string, args: Array) : Object { 
     if (fname == "f1") { 
      return myF1(args); 
     } else { 
      return superClassObject.InvokeFunction(fname, args); 
     } 
    } 
} 

ASでの関数呼び出しの実装方法がわかりません。 "InvokeFunction"を何にする必要がありますか?

+0

コンパイル時にサブクラス化するには、クラス定義への参照が必要です。さもなければ、あなたは何もサブクラス化しないようにコンパイラに要求しています....あなたの質問は意味をなさない。 –

+0

サブクラスのコンストラクタで 'super()'キーワードを使用する –

答えて

0

.swcではなく.swcを使用してください。拡張するクラスは、実行時ではなく、コンパイル時に使用可能でなければなりません。とにかくswfの使用が必須の場合、機能を「オーバーライド」するためにさまざまなテクニックを使用できます。 継承の他に、クラスの機能を変更するための他のOOPの概念(Composition, Aggregationなど)とデザインパターン(Proxy,Adapterなど)があります。あなたはそれらを使うことができます。

関連する問題