0

レベル選択画面を作成していますが、レベルごとに異なるレベル番号を表示するテキスト フィールドが必要です。ここで何が間違っているのかはわかりませんが、何をしたかを調べて、関連するコードを投稿します。

ボタン クラス (リンク) があり、シンボル内に動的テキスト フィールドがあります。関連性には 2 つのクラスがLevelSelectScreenありますLevelSelectButtons(それらが何であるかは一目瞭然です)。LevelSelectButtonsクラス内でテキストを変更するのは本当に簡単だと思いました。 を実行するだけlevelText.text = "Wanted Text"levelText、ボタンのインスタンス名を指定できます (ボタンのグラフィックの上にあるテキスト フィールドだけです)。残念ながら、これにより、非常に一般的で厄介なエラーが発生します: TypeError: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。

ループ中にクラスで実質的に同じことをしようとしましLevelSelectScreenたが、同じエラーが発生しました。この levelText を機能させる方法についてのヘルプは大歓迎です! 関連するコードは次のとおりです。

レベル選択画面

    public class LevelSelectButtons extends SimpleButton {

        public var levelNumber:int;
        public var levelSelectScreen:LevelSelectScreen;

        public function LevelSelectButtons(i) {

            x = 200;
            y = 100 + 50*i;
            addEventListener(MouseEvent.CLICK,LevelSelectClicked,false,0,true)
            levelNumber = i;
            levelText.text = "Level" + i;
        }

    }

レベル選択画面

public class LevelSelectScreen extends MovieClip {

    public var levelSelectButtons:LevelSelectButtons;
    public var mainMenuButton:MainMenuButton;

    public function LevelSelectScreen() {

            for (var i:int = 1; i<=2; i++) 
            {
                levelSelectButtons = new LevelSelectButtons(i);
                addChild(levelSelectButtons);
            }
    }

}
4

2 に答える 2

2

SimpleButton に動的テキスト フィールドを含めることはできません。
迷惑です、私は知っています。

簡単な修正は、LevelSelectButton に SimpleButton を拡張する代わりにラップさせることです。次に、テキスト フィールドは、テキストのない SimpleButton の上の LevelSelectButton 内にあります。mouseEnabled( SimpleButton でのマウス イベントに干渉しないように、テキスト フィールドでは必ず false に設定してください。

より複雑なオプションは、独自のカスタム ボタン クラスを作成することです。
実際にはそれほど難しくはありませんが、ここでやろうとしていることはやり過ぎかもしれません。

于 2013-09-06T17:54:08.323 に答える
-1

levelText変数を宣言しておらず、それにアクセスしようとしているため、 null オブジェクト参照のプロパティまたはメソッドにアクセスできません。

于 2013-09-06T17:53:45.810 に答える