0

現在、別のクラスからの情報を必要とするクラスがありますが、実行時に他の変数に基づいてどのクラスを決定する必要があります。

事実上、GUN(1-9).asにアクセスできるようにするには、クラスBUTTON.asが必要です。

私が想定したコードは次のとおりです。

public function enableButton(shortcut:int):void{
        trace(ID)
        dtf_ammo.text = gun[ID].ammo
        refreshThis(shortcut, true)
        this.alpha = 1
        isActive = true
    }

IDは、クラス(この場合はgun1)の番号です。

以下は機能します:

public function enableButton(shortcut:int):void{
        trace(ID)
        dtf_ammo.text = gun1.ammo
        refreshThis(shortcut, true)
        this.alpha = 1
        isActive = true
    }

ただし、銃は9つあり、ボタンのクラスは1つしかないため、このID変数を使用して内部の関数にアクセスできるようにする必要があります。

これは可能ですか、そうでない場合は、私がここでやろうとしていることを行う方法はありますか?

4

2 に答える 2

1

実行時にのみ名前がわかるクラスの静的プロパティにアクセスするには、次のコードを使用できます。

getDefinitionByName("gun" + i).ammo

getDefinitionByName渡された文字列によって指定されたクラスを表すClassオブジェクトを返します。そのClassオブジェクトには、クラスのすべての静的プロパティへの参照が含まれています。

于 2012-05-03T18:52:25.957 に答える
0

コードの2番目のブロックが機能しているとおっしゃいました。だからあなたが作成して配列すると言う

 var gun:Array = new Array( gun1, gun2,gun3,gun4,gun5,gun6,gun7,gun8,gun9 )
 //gun1 to gun9 , being the instances of the Gun class
public function enableButton(shortcut:int):void{
        trace(ID)
        dtf_ammo.text = gun[ID].ammo
        refreshThis(shortcut, true)
        this.alpha = 1
        isActive = true
    }

したがって、関数enableButtonは正常に機能します。

于 2012-05-03T18:49:59.693 に答える