AS3 - 通过变量访问类信息

时间:2012-05-03 18:43:47

标签: actionscript-3 flash actionscript

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

实际上,我需要我的班级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变量来访问其中的函数。

这是可能的,如果不是,有办法做我想在这里做的事吗?

2 个答案:

答案 0 :(得分:1)

为了访问名称仅在运行时已知的类的静态属性,可以使用以下代码。

getDefinitionByName("gun" + i).ammo

getDefinitionByName返回Class对象,该对象表示由传入的String命名的类。该Class对象包含对该类的所有静态属性的引用。

答案 1 :(得分: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可以正常工作。