1

我是免费在线火炮游戏 ShellShock Live 的开发者:http: //www.newgrounds.com/portal/view/564049

一切运行顺利,但每隔 4 小时左右,我的错误日志中就会出现数百个“VerifyError:错误 #1026”。然后,他们会停下来。

我查看了 VerifyError 并发现“VerifyError 类表示遇到格式错误或损坏的 SWF 文件时发生的错误。” Newgrounds 上的 SWF 只是从另一个站点加载完整游戏 SWF 的小型加载器 SWF,所以那里肯定有问题。我被难住了,因为游戏可以运行好几天,然后在没有更改任何 SWF 之后就开始突然出现这些错误。

ShellShock 在任何时候都有数百名玩家在线,所以我想尽快解决这个问题。任何帮助,将不胜感激!谢谢!

4

3 回答 3

1

我知道原来的帖子已经有几年的历史了,但是由于我刚刚花了很多天试图解决类似的问题,并且由于该线程不包含我认为正确的解释,所以我将发布我的结论在这里自己调查,供其他人使用:

几乎肯定会记录 VerifyError 事件,因为 NewGrounds 上的加载器 SWF 的目标 Flash Player 版本低于导致此错误的游戏 SWF 的版本。

用户系统上的 Flash Player 将接受 NewGrounds SWF 加载程序,因为它的目标版本等于或低于安装的版本。之后,可以加载针对更高 Flash Player 版本的外部 SWF,而不会引起 Flash Player 的任何投诉,除非它尝试访问该 Flash Player 中不可用的功能,然后它会抛出 VerifyError。

这个问题的偶发性,在 4 小时内激增,可能与更高版本的 Flash Player 在世界不同地区(以及不同的时区)的不同渗透有关。在最近 Flash Player 版本普及率较低的国家,在休闲游戏非常活跃的时期(周末和晚上?),您可能会看到成批的这些 VerifyErrors 记录。

坏消息是,在为这个问题寻找解决方法很多天之后,我们一直无法找到任何方法来捕获 VerifyError。它甚至不会被 UncaughtErrorEvent 处理程序捕获!

我可以建议的唯一可能对您的情况有所帮助(不幸的是,不是我的)是确定 NewGrounds 加载程序 SWF 的目标版本(检查 SWF 中的第 4 个字节),然后执行以下操作之一:

  • 将您的游戏编译为与加载程序目标相同的 Flash Player 版本。这样您就可以确定,如果 NewGrounds 加载器 SWF 成功加载到用户的 Flash Player 中,您的 SWF 也可以在该版本中正常工作,或者

  • 在游戏的初始化代码中,检查 Capabilities.version 以确定安装在用户系统上的 Flash Player 版本,并使用它来分支控制,以便仅在适当的 Flash Player 版本中使用高级 Flash Player 功能。

就我而言,我可以访问加载程序代码,但不能访问它加载的数千个 SWF 的代码。由于外部 SWF 被打印到加载器 SWF 的副本中作为 ByteArrays,我可以检查 SWF 的 Flash Player 目标版本字节 (byteArray[3]),并将其与从 Capabilities.version 获取的已安装 Flash Player 'major.minor' 版本进行比较,但由于 SWF Flash Player 目标版本字节(当前)随着 Flash Player 的每个次要版本增加而增加,因此不可能将 SWF 目标字节 (byteArray[3]) 映射到未来的 Flash Player 'major.minor' 版本,直到我们知道当前 Flash Player 的最大次要版本号是多少。

希望遇到这种情况的其他人会比我们有更好的运气。

于 2013-12-11T05:42:15.070 回答
0

我认为这可能是 Flash 播放器错误,请尝试禁用任何图形加速或缓存。弄清楚他们使用的是什么显卡可能会有所帮助。

您是否对套接字服务器进行了更改?您使用的是 smarfoxserver 之类的吗?

于 2011-03-26T01:57:36.097 回答
0

我在使用 cs3 flash9 的一个非常小的项目中遇到了这个错误。所以我能够追踪这个错误。

注意:此错误发出不正确。在我的项目中发出错误的原因不是因为 swf 错误,因为我没有将任何 swf 导入到我的项目中。

原因:我有一个这样写的代码行:_mc.my_counter && _mc.my_counter--;

解决方案:我将这一行改为: if(_mc.my_counter) _mc.my_counter--;

...并且验证错误消息消失的速度和它出现的一样快。看起来这是一个真正的 as3 错误。

于 2017-07-07T14:33:01.507 回答