2012-03-28 97 views
0

这非常令人沮丧。我只是试图创建一个动态文本,并在运行时放入一些文本。错误#1009:无法访问空对象引用的属性或方法

我得到这个错误,虽然

TypeError: Error #1009: Cannot access a property or method of a null object reference. 
    at MethodInfo-1() 
    at flash.events::EventDispatcher/dispatchEventFunction() 
    at flash.events::EventDispatcher/dispatchEvent() 
    at flash.net::URLLoader/onComplete() 

我有一个名为为textLabel文本对象,这是一个名为MC_state影片剪辑中。 我得到它,因为我用:

MC_state.textLabel.text = "asdasd"; 

而且我希望我知道问题是什么。我有其他的对象设置方式不会给我这个问题。我只是不知道如何调试。

谢谢!

+0

从你给出的,我会猜测:你正试图访问textLabel之前已经初始化。你在哪里试图分配到文本属性? – 2012-03-28 16:05:08

+0

MC_State所在的关键帧位于代码所在的时间轴上。 (第10帧的代码,35的第一个关键帧)。我复制了框架,以便垂直所有对象都有一个正好在代码下面的框架,我认为它解决了这个问题。那是这种方式吗? – Ted 2012-03-28 16:21:27

回答

2

错误是告诉你,有没有对象一起MC_state.textLabel.text的地方,所以无论是闪存无法找到MC_state,或者textLabelMC_state或内部MC_state.textLabel(不太可能)text

如果我可以大胆虽然猜测,我想你看到这一点,因为这个事情发生了:

你有地方叫MC_state一个影片剪辑具有多个帧。您将绑定到gotoAndStop或gotoAndPlay到一个框架,该框架的文本框名为textLabel,这就是您要更改的文本。

这个问题,它经常出现在从AS2过渡的人身上,就是当你执行gotoAndPlay/gotoAndStop函数时,movieClip不会立即更新,这发生在渲染阶段。该函数后面的代码立即执行,所以动画片段仍然在旧框架中。

有两种方法可以处理它

  • 成立了事件处理程序,更新渲染事件,并更改文本,然后。您可以通过运行stage.invalidateexample

  • 快点舞台渲染其他(更好)的选择是在所有帧中的文本,并将其隐藏的或不可见的,这样你可以在任何时候访问它。

+0

我复制了框架,以便在该框架上有一个对象。现在我看不到文字,这是另一个问题。这是令人沮丧的 – Ted 2012-03-28 16:32:35

+0

你可以在所有框架中看到文本,并通过代码设置文本可见性,不应该成为问题,因为无论如何您都要在代码间切换。您也可以更改不同关键帧中文本字段的属性,只需确保每个帧中都存在文本字段。 – Daniel 2012-03-28 16:45:39

+0

我注意到抗锯齿可能会造成困难,切换到使用设备字体,但看起来很可怕 – Ted 2012-03-28 17:19:24

相关问题