【问题标题】:Flex Error #1009: Cannot access a property or method of a null object referenceFlex 错误 #1009:无法访问空对象引用的属性或方法
【发布时间】:2011-05-07 17:38:01
【问题描述】:

运行使用 flex 创建的游戏时出错。 我知道对此有一些疑问,但我的情况很奇怪。我创建了一个在我的计算机上运行良好的简单打字游戏,但是当我尝试将其在线部署到 facebook 时,我得到了这些错误。我使用来自 adobe 的教程中的代码 http://www.adobe.com/devnet/facebook/articles/flex_fbgraph_pt4.html 将我的 flex 游戏部署到 facebook

这是错误信息:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at FacebookUserStatusWeb/init()
    at FacebookUserStatusWeb/___FacebookUserStatusWeb_Application1_creationComplete()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at mx.core::UIComponent/dispatchEvent()
    at mx.core::UIComponent/set initialized()
    at mx.managers::LayoutManager/doPhasedInstantiation()
    at mx.managers::LayoutManager/doPhasedInstantiationCallback()

这里是 init() 函数的 sn-p:

            protected var text1:String="Text to be typed"; //hard-coded temporarily
            protected const TIMER_INTERVAL:int = 10;
            protected var t:Timer = new Timer(TIMER_INTERVAL);
            protected var topURL:String=ExternalInterface.call('top.location.toString');
            protected function init():void
                    {
                        t.addEventListener(TimerEvent.TIMER, updateTimer);
                        ProblemText.text = new String(text1);
                        Facebook.init("<my app id>",loginHandler);
                        currentState = (topURL) ? "loggedout": "loggedoutonfacebook";
                    }

一些注意事项: 1.my app id 是我不想显示的 facebook app id 2.ProblemText 是一个富文本,我放置了要由播放器键入的段落。 3.我已经删除了Application1_creationComplete()方法,但它仍然出现在错误列表中

而且我对前两个以外的错误感到好奇。他们的意思是什么? 啊,如果有帮助,我可以再贴一些代码

【问题讨论】:

  • 堆栈跟踪通常包含行号;有没有安装调试播放器?
  • 绝对比我在下面的回答中建议的“跟踪”kludge 更可取 =)

标签: apache-flex actionscript-3 facebook


【解决方案1】:

第一:您只看到一个错误。您在 #1009 错误下方看到的所有内容都是您的堆栈跟踪,而不是其他错误。

堆栈跟踪基本上会告诉您在错误发生之前发生的一系列事情,最新的在顶部。这很有用,因为通常在您看到的实际错误之前发生的事情会导致所述错误。

第二:空对象引用正在发生,因为您的 init() 函数中的某些内容试图访问不存在的对象或不存在的对象中的属性。一种(有点混乱但有效的)调试方法是在代码中删除一些跟踪语句,以查看在出现错误之前它走了多远——这个想法是隔离导致问题的特定行。完成此操作后,您需要向后工作以找出您尝试使用的对象或属性为空的原因。它可能很简单,比如错字,也可能更复杂。你必须以一种或另一种方式来侦查它=)

祝你好运!

【讨论】:

    【解决方案2】:

    终于搞定了。万一人们和我有同样的情况,究竟发生了什么是在我的电脑上我只用一种状态模拟了游戏,但是当我部署到 facebook 时,我有几种状态(登录、注销等)。在 init() 中,我尝试访问当前状态下不存在的 ProblemText 标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      • 2012-12-29
      • 2013-05-16
      • 2014-08-05
      • 1970-01-01
      相关资源
      最近更新 更多