我有一个名为inputWord的TextField实例,它在第一帧上不包含任何文本。在同一帧上,在actions层上,无论何时以任何方式引用inputWord,都会出现错误:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at DC/frame1()[DC::frame1:19] //DC is the name of document class that I created.
at flash.display::MovieClip/gotoAndStop()
at DC()[C:\Users\nikkka\Desktop\flash\DC.as:25]
19是我的代码涉及inputWord的行数。它有效,我的意思是我写 inputWord.text =“smth”
它的文字变成了“smth”,但也有同样的错误。为什么呢?
答案 0 :(得分:2)
问题出在gotoAndStop()
上在as2中,当你执行gotoAndStop时,你可以立即访问框架中的资源,正如Kevin指出的那样,框架必须首先渲染
要执行此操作,您需要使用onrender侦听器在渲染帧时触发以处理与帧相关的逻辑。然后你需要使舞台无效,以强制渲染渲染。
像这样:stage.addEventListener(Event.RENDER, onRenderStage);
protected function onRenderStage(ev:Event):void {
inputWord.text = "smth"
trace(inputWord.text);
}
gotoAndStop(5);
stage.invalidate();
答案 1 :(得分:1)
可能在第一帧上,inputWord尚未加载,因此您收到错误。在下一帧上,它被加载,因此文本正在成功设置。解决方案是在设置之前测试文本字段是否存在:
if (this.inputWord) this.inputWord.text = "smth";