0

現在、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) を実行するだけで問題なく動作します。

4

1 に答える 1

0

クラスのインスタンスで静的メンバー関数を呼び出すことはできません。

これが理由です:

buttonArray[level-1].enableButton(level)

動作しません。enableButton関数を非静的にすると、機能するはずです。

button.enableButton(1)

クラス名「button」を使用して関数を呼び出すため、正常に機能します。

于 2012-05-02T21:05:15.787 に答える