我正在制作一个关卡选择屏幕,我需要文本字段来显示每个关卡的不同关卡编号。我真的没有看到我在这里做错了什么,但我会回顾我所做的并发布相关代码。
我有一个按钮类(已链接),在符号内部我有一个动态文本字段。我有两类相关性,LevelSelectScreen
和LevelSelectButtons
(非常不言自明)。我认为如果我在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);
}
}
}
答案 0 :(得分:2)
SimpleButton中不能包含动态文本字段 我知道,很烦人。
简单的修复就是让LevelSelectButton包装一个SimpleButton而不是扩展它。然后你的文本字段将位于无文本SimpleButton之上的LevelSelectButton中。 (务必在文本字段中将mouseEnabled
设置为false,这样它就不会干扰SimpleButton上的鼠标事件。
更复杂的选择是编写自己的自定义按钮类 实际上并不是那么困难,但对于你在这里尝试做的事情可能有些过分。
答案 1 :(得分:-1)
因为您尚未声明 levelText 变量并且您正在尝试访问它,因此无法访问属性或 null对象引用的方法< /强>