0

目前我有一个类需要来自另一个类的信息,但是必须在运行时根据其他变量确定哪个类。

实际上,我需要我的类 BUTTON.as 能够访问 GUN(1-9).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返回代表由传入的 String 命名的类的 Class 对象。该 Class 对象包含对类的所有静态属性的引用。

于 2012-05-03T18:52:25.957 回答
0

你说第二个代码块正在工作。所以如果你创建和数组说

 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 回答