目前我有一个类需要来自另一个类的信息,但是必须在运行时根据其他变量确定哪个类。
实际上,我需要我的班级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变量来访问其中的函数。
这是可能的,如果不是,有办法做我想在这里做的事吗?
答案 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可以正常工作。