在for循环中更改按钮的文本字段

时间:2013-09-06 17:31:50

标签: string actionscript-3 button textfield

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

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

我在循环期间尝试在我的LevelSelectScreen类中做同样的事情,但是我得到了同样的错误。有关如何使此levelText工作的帮助非常感谢!这是相关的代码。

LevelSelectScreen

    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;
        }

    }

LevelSelectScreen

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);
            }
    }

}

2 个答案:

答案 0 :(得分:2)

SimpleButton中不能包含动态文本字段 我知道,很烦人。

简单的修复就是让LevelSelectButton包装一个SimpleButton而不是扩展它。然后你的文本字段将位于无文本SimpleButton之上的LevelSelectButton中。 (务必在文本字段中将mouseEnabled设置为false,这样它就不会干扰SimpleButton上的鼠标事件。

更复杂的选择是编写自己的自定义按钮类 实际上并不是那么困难,但对于你在这里尝试做的事情可能有些过分。

答案 1 :(得分:-1)

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