所以我将游戏从Actionscript 2移植到Actionscript 3,这个时髦的错误让我无法进一步调试。
它是一个堆栈溢出错误(得到堆栈溢出!),这显然发生在gotoAndStop函数上,它是本机AS3代码。
不幸的是,我不知道这种行为的上下文发生在哪里。看起来堆栈溢出错误会导致调试器崩溃,因此下面的长错误消息是我必须使用的全部内容。它似乎非常内在,但它仍然存在。
有没有人经历过,或者可以提供有关AS3中此(或类似)错误的提示/见解?
Error: Error #1023: Stack overflow occurred.
at flash.display::DisplayObjectContainer()
at flash.display::Sprite()
at flash.display::MovieClip()
at flash.display::MovieClip/gotoAndStop()
at block/frame1()
at flash.display::MovieClip/gotoAndStop()
at block/frame1()
at flash.display::MovieClip/gotoAndStop()
at block/frame1()
at flash.display::MovieClip/gotoAndStop()
at block/frame1()
at flash.display::MovieClip/gotoAndStop()
at block/frame1()
以下是发生此错误的行:
childClip.gotoAndStop(MovieClip(root).someVariable[value]);
答案 0 :(得分:0)
应检查在您首先发送播放头的实际帧上是否写有任何代码 你进入了一个无限循环,播放器以圆圈运行。 你应该在应用程序的早期设置一个断点,然后一步一步(f5)。
答案 1 :(得分:0)
我正在回答我自己的问题。
我做了一堆调试。我必须感谢@LDMS注意到AS3的简单非调试模式调试功能,这有助于实现这一目标!
有一系列行为导致了这个问题。
var someFunction:Function;
)。gotoAndStop()函数似乎是立即停止在第一帧初始化时的函数变量。然后它会尝试进入某个帧,这可能使用了其中一个函数,导致错误检查表现得很奇怪,然后检测到堆栈溢出。
解决方案是让目标实例在第一帧代码行的末尾调用原始的gotoAndStop()函数。这样,在执行代码期间不会发生gotoAndStop()函数。这是同步的。
希望这有助于其他人在将来遇到类似问题!