在什么情况下,gotoAndStop无效

时间:2013-12-21 09:06:06

标签: actionscript-3 flash

我有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,谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

您的问题可能是您编写了错误的代码或使用旧的Flash SDK。

在第一种情况下,您应该检查您是否正在调用MovieClip的gotoAndStop(),play()或gotoAndPlay()方法。为此,您可以编辑MC的课程:

  • 在库面板的Flash Professional中右键单击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的说明。