0

我正在制作一个级别选择屏幕,我需要文本字段来显示每个级别的不同级别编号。我真的不明白我在这里做错了什么,但我会回顾我所做的并发布相关代码。

我有一个按钮类(链接),在符号内我有一个动态文本字段。我有两类相关性,LevelSelectScreenLevelSelectButtons(不言自明它们是什么)。我认为如果我在LevelSelectButtons类中更改文本真的很容易,只需简单地执行levelText.text = "Wanted Text"levelText我的按钮的给定实例名称在哪里(只是按钮图形顶部的文本字段)。不幸的是,这给出了一个非常常见和烦人的错误:TypeError:错误#1009:无法访问空对象引用的属性或方法。

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在文本字段上设置为 false,这样它就不会干扰 SimpleButton 上的鼠标事件。

一个更复杂的选择是编写您自己的自定义按钮类。
这实际上并没有那么困难,但是对于您在这里尝试做的事情可能有点矫枉过正。

于 2013-09-06T17:54:08.323 回答
-1

这是因为您尚未声明levelText变量并且您正在尝试访问它,因此无法访问null 对象引用的属性或方法。

于 2013-09-06T17:53:45.810 回答