1

私は、無料のオンライン大砲ゲームである ShellShock Live の開発者です: http://www.newgrounds.com/portal/view/564049

すべてがスムーズに実行されていますが、4 時間程度の間、エラー ログに何百もの "VerifyError: Error #1026" が表示されることがあります。その後、彼らは停止します。

VerifyError を調べたところ、「VerifyError クラスは、不正な形式または破損した SWF ファイルが検出されたときに発生するエラーを表している」ことがわかりました。Newgrounds の SWF は、別のサイトから完全なゲーム SWF をロードする小さなローダー SWF にすぎないため、そこに問題があるはずです。どちらの SWF も変更しないと、ゲームは何日も問題なく動作し、その後これらのエラーが突然発生し始めるので、私は困惑しています。

ShellShock では、常に何百人ものプレイヤーがオンラインになっているため、できるだけ早く修正したいと考えています。どんな助けでも大歓迎です!ありがとうございました!

4

3 に答える 3

1

元の投稿が数年前のものであることは知っていますが、同様の問題を回避するために何日も費やしたばかりであり、このスレッドには正しい説明であると私が信じているものが含まれていないため、私の結論を投稿します他の人が使用できるように、ここで独自の調査を行います。

NewGrounds のローダー SWF は、このエラーの原因となったゲーム SWF よりも低いバージョンの Flash Player をターゲットにしているため、VerifyError イベントはほぼ確実にログに記録されています。

ユーザーのシステム上の 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 は ByteArray としてローダー SWF のコピーにステンシルされるため、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

フラッシュ プレーヤーのエラーであると思われます。グラフィック アクセラレーションまたはキャッシュを無効にしてみてください。彼らが使用しているグラフィックカードを把握することが役立つ場合があります。

ソケット サーバーに変更を加えましたか? 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 に答える