Actionscript 3 AS3-通过变量访问类信息

Actionscript 3 AS3-通过变量访问类信息,actionscript-3,flash,actionscript,Actionscript 3,Flash,Actionscript,目前,我有一个类需要来自另一个类的信息,但是哪个类必须在运行时根据其他变量确定 实际上,我需要我的类按钮。以便能够访问GUN(1-9)。as,而不知道它将是什么数字 我认为可以工作的代码是: public function enableButton(shortcut:int):void{ trace(ID) dtf_ammo.text = gun[ID].ammo refreshThis(shortcut, true) this.a

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

实际上,我需要我的类按钮。以便能够访问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个guns,只有1个类,所以我需要能够使用这个ID变量访问其中的函数


这是可能的,如果不是的话,有没有办法做到我在这里尝试做的事情?

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

 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
    }

因此,功能启用按钮可以正常工作

为了访问只有在运行时才知道名称的类的静态属性,可以使用以下代码

getDefinitionByName("gun" + i).ammo

getDefinitionByName
返回表示传入字符串命名的类的类对象。该类对象包含对类的所有静态属性的引用。

是否尝试访问类静态变量?实例变量?我正在尝试访问静态变量。public static var ammo:int=999出于某种原因,这给了我一个错误,尽管打开了“gun1.as”并且知道它可以工作:ReferenceError:error#1065:变量gun1没有定义。在src.actionbar::button/enableButton()的global/flash.utils::getDefinitionByName()中,如果有帮助,gun1-9类与调用它的文件夹不在同一个文件夹中,它们位于src.wepaons.gun1-9中。我真的不明白为什么它说gun1没有定义。@Kevin确保A:导入所有的gun#类,或者B:用包名(武器。gun#)完全解析类名。我已经这样做了,我假设它会工作,考虑到上面的解决方案是如何工作的,也就是简单地通过“gun1”“gun2”调用类. 即使执行trace(getDefinitionByName(“gun1”))也会返回相同的错误。通过执行以下操作解决了此问题:trace(getDefinitionByName(“src.arms.gun”+ID))这是可行的,但据我所知,您无法通过数组访问静态函数。我想我弄错了,不是数组。它是一个实例,作为数组值。是的,您不能通过实例访问静态函数。您需要直接使用类名。所以,如果类名是Gun,那么使用Gun.ammo(否则会给出编译器错误),或者,正如您所说的,有9个Gun,那么您也可以使用函数Gun.getGunInstance()。