我有3帧,我没有显示整个代码,它太大了。主要代码是
gotoAndStop(2);
trace('frame:',currentFrame)
输出应为frame:2
但事实上它是框架:1,框架2中的对象无法加载并变为空 没有编译器错误
当我删除后面的一些代码时,应用程序有时会正确运行并停在第2帧
这不应该发生,因为它之后的任何代码都不应该涉及输出
虽然我可以在删除第一帧时解决这个问题,但继续开发仍然存在风险
任何想法为什么会这样?
在继续之前,我应该提一下,由于null对象,我实际上有编译错误,但这不是主要观点。
我有一个名为host的类,代码gotoAndStop
也位于构造函数的第一位。
我在主机中放置了覆盖功能,输出为
stopping at frame: 2 Called from: Error
at host/gotoAndStop()
at host()
frame: 1
TypeError: Error #1009: Cannot access a property or method of a null object reference
at host()
然后我尝试了方法2 Creative Magic说,结果显示
stopping at frame: 2 Called from: Error
at host/gotoAndStop()
at host()
displaying frame: 1
frame: 1
TypeError: Error #1009: Cannot access a property or method of a null object reference
at host()
displaying frame: 2
这让我很困惑我在框架中发生了什么,我想知道原因就像你说的旧版SDK,谢谢你的帮助
答案 0 :(得分:0)
您的问题可能是您编写了错误的代码或使用旧的Flash SDK。
在第一种情况下,您应该检查您是否正在调用MovieClip的gotoAndStop(),play()或gotoAndPlay()方法。为此,您可以编辑MC的课程:
在您选择的IDE中添加以下功能
override public function gotoAndStop(frame:Object, scene:String = null):void
{
trace("stopping at frame:", frame, "Called from:", new Error().getStackTrace());
super(this).gotoAndStop(frame, scene);
}
它将跟踪何时调用gotoAndStop()方法以及谁调用它。它会让你看看框架是否被其他东西设置为框架。我建议你也覆盖play()和gotoAndPlay()函数。
如果你被这段代码吓倒了,你可以在MC的每一帧上添加一个trace(),因为它只有3帧,所以不应该太多工作。您的跟踪可能看起来像这样:
trace("displaying frame:", this.currentFrame);
另一个可能的原因可能在于您正在使用的SDK中。我,自己有一个奇怪的错误,当加载的MC不会听取stop(),gotoAndStop()和其他功能。通过升级SDK解决了这个问题:http://www.adobe.com/devnet/flex/flex-sdk-download.html
还有关于如何替换旧SDK的说明。