我在运行使用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()方法,但它仍然出现在错误列表
中此外,我对前两个错误感到好奇。他们的意思是什么? 啊,如果它有用,我可以发布更多的代码
答案 0 :(得分:4)
首先:您只看到一个错误。您在#1009错误下面看到的所有内容都是您的堆栈跟踪,而不是其他错误。
堆栈跟踪基本上会告诉您在错误发生之前发生的一系列事情,最新的事件发生在顶部。这很有用,因为在您看到的实际错误之前发生的事情通常会导致所述错误。
第二个:由于init()函数中的某些内容试图访问不存在的对象中的属性或不存在的对象,因此发生了空对象引用。一种(稍微混乱但有效)调试方法是在代码中删除一些跟踪语句,以查看在错误处理之前它有多远 - 想法是隔离导致问题的特定行。完成后,您需要向后工作以找出您尝试使用的对象或属性为何为空。它可能是简单的东西,比如拼写错误,或者可能更复杂。你不得不以某种方式讨价还价=)
祝你好运!答案 1 :(得分:0)
终于得到了这个bug。为了防止人们对我有同样的情况,究竟发生了什么事情发生在我的计算机上我用一个状态模拟游戏,但是当我部署到facebook时我有几个状态(登录,登出等)。在init()中,我尝试访问当前状态中不存在的ProblemText Label。