【问题标题】:VerifyError out of the blue. Help!验证错误出乎意料。帮助!
【发布时间】:2011-03-25 19:14:54
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您是否更新了 Flash 播放器版本?
  • 不是我得到错误。事实上,我从来没有遇到过。是来自许多不同网站的数百名其他人在玩这款游戏。
  • 对于单个玩家来说,它是否始终如一地发生,还是间歇性发生?谁在托管完整的游戏 SWF?
  • @kChamp 啊哈!终于找到你了想要一个游戏,所以我可以得到上帝之光吗? :)

标签: actionscript-3 actionscript verifyerror


【解决方案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 的最大次要版本号是多少。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的回复!在我的电脑上运行游戏时实际上并没有发生。它发生在我的球员的电脑上。对于多人主机,我使用 Player.IO playerio.com 不,即使我没有进行任何更改,问题也会开始。
    • 好的,所以这里有一个想法,也许您的服务器当时正在关闭或某些事情正在超时,所以在您尝试连接它的代码中设置故障保护。做这样的事情:kirupa.com/forum/showthread.php?p=2120336try { loader.load(request); }catch (error:SecurityError) { show_display(error); } 有一些内部影片剪辑出现错误并显示错误消息,因此如果出现错误,您的用户可能会通知您。
    【解决方案3】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 2010-11-28
      • 2021-12-04
      • 1970-01-01
      相关资源
      最近更新 更多