如果不应该发生错误,请输入错误#1502

时间:2015-03-05 10:03:09

标签: actionscript-3 flash tweenlite

我开始在游戏中收到很多#1502错误。 ("脚本执行时间过长")不同的Flash播放器版本,不同的用户,游戏中的随机位置。我自己无法复制它。

我收集游戏日志以防止未被捕获的错误,并且根据这些错误,用户在发生此错误前几秒钟与游戏进行了互动。这就是困扰我的原因,这也是我提出这个问题的原因。这不对。如果出现此错误,根据我的理解,他们不应该与它进行至少15秒的互动。

而且不仅仅是一个案例。所有这些新错误(每天数百个)在错误发生前1-10秒至少记录了一个用户操作。

起初我以为时间戳错了。我使用getTimer()来获取它。我在游戏中插入while (true)循环来测试这个并验证时间戳是正确的,并且在启动导致#1502错误的循环的操作后15秒发生。

此错误可能连接到TweenLite,因为所有堆栈跟踪都如下所示:

Error: Error #1502
    at com.greensock.core::SimpleTimeline/renderTime()
    at com.greensock::TweenLite$/updateAll()

我使用的TweenLite版本并不是最新的版本,但我在这个游戏中已经使用了1。5年,之前没有遇到任何问题。遗憾的是,我无法更新到最新版本,因为它不向后兼容,需要进行大量更改。

UPD要明确,问题是"如果用户能够在几秒前与游戏进行互动,我怎么能得到#1502错误?"

2 个答案:

答案 0 :(得分:0)

您需要重构代码。这应该有所帮助并给出一些解释:

http://www.senocular.com/flash/tutorials/asyncoperations/

答案 1 :(得分:0)

原来这是一个JaveScript错误。在错误发生前1分钟,对JS函数进行了ExternalInterface调用,该函数出现了错误。 1分钟后,它突然抛出这个错误。我没有启用JS错误编组,但此错误仍然通过。堆栈是偶然的,与实际错误没有任何关系。