AS3 - 通过数组访问静态函数

时间:2012-05-02 21:00:35

标签: actionscript-3 flash

目前我有一个数组,它有9个按钮。这叫做BAR.as:

public static var buttonArray: Array = new Array()

for(var i:int = 0; i<9; i++){
            barButton = new button
            buttonArray.push(barButton)
            buttonArray[i].name = button+(String[i])
            buttonArray[i].x = 15+(i*buttonArray[i].width)
            addChild(buttonArray[i])
        }

在我的按钮的类中,我指定了一个enableButton函数,这个名为ACTIONBARBUTTON.as:

public static function enableButton(shortcut:int):void{
        //instance.refreshThis(shortcut, true)
        trace("test")
    }

我想要做的是有一个功能,我可以根据需要调用启用/禁用这些按钮(但不仅仅是“.enable”/“。disable”),因为它们内的内容需要经常更改。我这样做的方法是通过BAR.as:

public static function updateWeapons(level: int):void{
        buttonArray[level-1].enableButton(level)
    }

但是,这会返回以下错误:

ReferenceError: Error #1069: Property enableButton not found on src.actionbar.button and there is no default value.
at src.actionbar::bar$/updateWeapons()
at src.game::player$/levelup()
at src.game::gameplay/init()
at flash.display::DisplayObjectContainer/addChildAt()
at src.camera::control()
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()

只需运行button.enableButton(1)即可。

1 个答案:

答案 0 :(得分:0)

您无法在类的实例上调用静态成员函数。

这就是为什么:

buttonArray[level-1].enableButton(level)

不起作用。使enableButton函数非静态,它应该工作。

button.enableButton(1)

正常工作,因为您使用类名“按钮”来调用该函数。