0

アクション スクリプト 3 でゲームを作成しています。その中には、プレイヤー クラスと敵クラスが派生するアクター クラスがあります。これを行っているのは、特定の AI や特殊な動作 (ボスなど) を提供する必要がない限り、アクション スクリプト ファイルを作成せずに、各敵のライブラリに新しいクリップを作成するだけで済むようにするためです。

しかし、私は問題に遭遇しました。

敵の構築に引数を渡そうとすると (敵をより多くのヘルスでスポーンさせる)、エラー 1136 (引数の数が正しくありません。) が発生します。

これは、実行時に自動的に作成されるコンストラクターが、その親クラスと同じ引数を持たないためです。何百もの敵のそれぞれに対して親コンストラクター関数をコピーして貼り付けるクラスファイルを作成せずに、これを回避する方法はありますか?

4

2 に答える 2

1

編集 して実際に質問を読み直してください。super(); を探していると思います。

public class Actor{
 private var myHelth:uint;
     public function Actor(helth:uint = 100){
         myHelth = helth; //this will be set to 100 if nothing it passed in or the value passed
    }
}

アクターを拡張するクラス:

public class Boss extends Actor{
     public function Boss(){
          super(200); //passes 200 to Actor;
     }
}

データをクラス コンストラクターに渡そうとしている場合は、それが引数を受け入れていることを確認する必要があります。

public class Actor{
     private var myHelth:uint;
     public function Actor(helth:uint = 100){
         myHelth = helth; //this will be set to 100 if nothing it passed in or the value passed
     }
}

次に使用する

 var a:Actor = new Actor(200); //setting health to 200

 var b:Actor = new Actor(); //using the default of 100
于 2012-04-14T22:09:46.037 に答える
0

Flash Pro のシンボルに適切な AS リンケージがあることを確認してから、super ステートメントで pass コンストラクター引数を使用します。

アクター - 基本クラス

package
{

    public class Actor
    {
        public function Actor(name:String, role:String)
        {
        }
    }
}

Player - 独自のコンストラクタ パラメータを定義する Actor から継承します。

package
{

    public final class Player extends Actor
    {
        public function Player(... params:Array)
        {
            // pass desired inherited constructor parameters
            super("name", "role");
        }
    }
}

Enemy - 独自のコンストラクター パラメーターを定義する Actor から継承します。

package
{

    public final class Enemy extends Actor
    {
        public function Enemy(... params:Array)
        {
            // pass desired inherited constructor parameters
            super("name", "role");
        }
    }
}
于 2012-04-14T22:17:39.493 に答える