2014-09-01 66 views
0

我使用的是Flash CS 5.5.if在错误发生时,我在按钮单击事件中调用了一个函数。任何人都说错了什么?TypeError:错误#1009:无法访问空对象引用的属性或方法

这是我的代码:

var visited:Object = { 
    Movieclip: 0, 
    one: 0, 
    two: 0, 
    three: 0, 
    four: 0, 
    five: 0, 
    six: 0, 
    seven7: 0 
}; 

function saveCourseStatus():void 
{ 

    var suspend_str:String = visited.Movieclip + "," + visited.one + "," + visited.two + "," + visited.three + "," + visited.four + "," + visited.five + "," + visited.six + "," + visited.seven; 
    scorm.set("cmi.suspend_data", suspend_str); 
    scorm.save(); 
} 

Newbutton.addEventListener(MouseEvent.CLICK, Nxt); 

function Nxt(event:MouseEvent):void 
{ 
    saveCourseStatus(); 
    MovieClip(this.root).gotoAndPlay(0, "one"); 
} 

我有这个error.saveCourseStatus();

peError: Error #1009: Cannot access a property or method of a null object reference. 
    at New_fla::MainTimeline/saveCourseStatus()[New_fla.MainTimeline::frame98:116] 
    at New_fla::MainTimeline/Nxt()[New_fla.MainTimeline::frame98:125] 
+0

什么是'visited.MovieClip'?另外,检查'visited'或'scorm'是否为空。 – Vesper 2014-09-01 13:54:31

+0

什么是scrom?你在某个地方创造了它吗? – mGolzadh 2014-09-02 06:38:50

回答

0

该错误表示“轻蔑”或“已访问”为空。如果您尝试获取null对象的属性或方法,则Flash会引发错误。根据您如何定义以及您的整个代码是如何设置的,scorm和visited都很可能无法使用saveCourseStatus函数。由于您不会将它们作为参数传递给saveCourseStatus,因此它们需要是saveCourseStus访问它们的公共变量。

此外,您的对象属性被命名为“seven7”(注意这个“7”),而你尝试将它在saveCourseStatus称作为“visited.seven”

+0

已投票。如果出现以下情况,Flash运行时不会抛出错误:'您尝试获取null对象的属性或方法。这是一个错误的表述,表明你根本不明白发生了什么。非实例化的复杂对象类型为'null'(yes null是类似MovieClip或String的类型),null类型的对象没有属性或方法,因此试图访问类型为null的对象上的任何内容都会导致错误。 – BotMaster 2014-09-01 19:47:30

+0

当我运行此:“var obj:Object; trace(obj.prop);”,我得到此错误:“TypeError:错误#1009:无法访问空对象引用的属性或方法。当我尝试获取null对象的属性时,这是Flash引发错误。这是一个语义问题吗?我只是想帮助OP。你有没有OP的答案? – Dave 2014-09-01 20:13:14

+0

我不回答空问题,因为它们仅适用于初学者。你的回答仍然表明你不明白什么是null类型的对象。这不是语义问题,null是一种类型而不是一种状态。 – BotMaster 2014-09-01 23:10:42

相关问题