Flex错误#1009:无法访问空对象引用的属性或方法

时间:2011-05-07 17:38:01

标签: flex actionscript-3 facebook

我在运行使用flex创建的游戏时遇到错误。 我知道有一些问题,但我的情况很奇怪。我创建了一个在我的计算机上运行正常的简单打字游戏,但当我尝试在线部署到Facebook时,我收到了这些错误。我使用adobe的教程中的代码http://www.adobe.com/devnet/facebook/articles/flex_fbgraph_pt4.html将我的弹性游戏部署到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()函数的片段:

            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.我的应用程序ID是我的Facebook应用程序ID,我不想显示 2.ProblemText是一个richtext,我把段落放在玩家输入的位置。 3.我已经删除了Application1_creationComplete()方法,但它仍然出现在错误列表

此外,我对前两个错误感到好奇。他们的意思是什么? 啊,如果它有用,我可以发布更多的代码

2 个答案:

答案 0 :(得分:4)

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

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

第二个:由于init()函数中的某些内容试图访问不存在的对象中的属性或不存在的对象,因此发生了空对象引用。一种(稍微混乱但有效)调试方法是在代码中删除一些跟踪语句,以查看在错误处理之前它有多远 - 想法是隔离导致问题的特定行。完成后,您需要向后工作以找出您尝试使用的对象或属性为何为空。它可能是简单的东西,比如拼写错误,或者可能更复杂。你不得不以某种方式讨价还价=)

祝你好运!

答案 1 :(得分:0)

终于得到了这个bug。为了防止人们对我有同样的情况,究竟发生了什么事情发生在我的计算机上我用一个状态模拟游戏,但是当我部署到facebook时我有几个状态(登录,登出等)。在init()中,我尝试访问当前状态中不存在的ProblemText Label。