VerifyError на ровном месте.Помогите! - PullRequest
1 голос
/ 25 марта 2011

Я являюсь разработчиком ShellShock Live, бесплатной онлайн-артиллерийской игры: http://www.newgrounds.com/portal/view/564049

Все прошло гладко, но время от времени в течение 4 часов или около того сотни«VerifyError: Ошибка № 1026» появится в моем журнале ошибок.Затем они остановятся.

Я заглянул в VerifyError и обнаружил, что «класс VerifyError представляет ошибку, которая возникает при обнаружении искаженного или поврежденного SWF-файла».SWF на Newgrounds - это просто небольшой загрузчик SWF, который загружает полный SWF игры с другого сайта, поэтому там должна быть проблема.Я в замешательстве, потому что игра будет работать нормально в течение нескольких дней, а затем просто начните получать эти ошибки на ровном месте, после того, как не будет внесено никаких изменений в SWF.поэтому я хотел бы исправить это как можно скорее.Любая помощь будет оценена!Спасибо!

Ответы [ 3 ]

1 голос
/ 11 декабря 2013

Я знаю, что оригинальному сообщению пару лет, но так как я потратил много дней, пытаясь обойти аналогичную проблему, и так как эта тема не содержит то, что я считаю правильным объяснением, я опубликую выводы моего собственного расследования здесь, для любого другого использования:

События VerifyError почти наверняка регистрируются, потому что SWF загрузчика на NewGrounds нацелен на более низкую версию Flash Player, чем версия SWF игры, которая вызывает эту ошибку.

Flash Player в системе пользователя будет принимать загрузчик SWF NewGrounds, поскольку он нацелен на версию, равную или ниже установленной версии. После этого внешний SWF-файл, предназначенный для более высокой версии Flash Player, может быть загружен без каких-либо жалоб со стороны Flash Player, если только он не попытается получить доступ к недоступным функциям в этом Flash Player, а затем выдаст ошибку VerifyError.

Спорадический характер этой проблемы в виде 4-часовых скачков, вероятно, связан с различным проникновением более поздних версий Flash Player в разные части мира (и, следовательно, в разные часовые пояса). Во время очень активных периодов казуальных игр (выходных и вечеров?) В странах с низким уровнем проникновения последних версий Flash Player вы, скорее всего, будете регистрировать партии этих VerifyErrors.

Плохая новость заключается в том, что после многих дней попыток найти обходной путь для этой самой проблемы нам не удалось найти какой-либо способ отловить ошибку VerifyError. Он даже не попадает в обработчик UncaughtErrorEvent!

Единственное, что я могу предложить, что может помочь в вашем случае (не мое, к сожалению), это определить целевую версию SWF загрузчика NewGrounds (проверьте 4-й байт в SWF), а затем выполните одно из следующих действий:

  • Скомпилируйте свою игру, чтобы выбрать ту же версию Flash Player, что и цели загрузчика. Таким образом, вы можете быть уверены, что если SWF-загрузчик NewGrounds успешно загружен в Flash Player пользователя, ваш SWF-файл также будет работать в этой версии без проблем, или

  • В коде инициализации вашей игры проверьте Capabilities.version, чтобы определить версию Flash Player, установленную в системе пользователя, и использовать ее для управления ветвлением, чтобы расширенные функции Flash Player использовались только в соответствующих версиях Flash Player. .

В моем случае у меня есть доступ к коду загрузчика, но не к коду тысяч SWF-файлов, которые он загружает. Поскольку внешние SWF-файлы делятся на копии загрузочного SWF-файла как ByteArrays, я могу проверить байт целевой версии SWF-файла Flash Player (byteArray [3]) и сравнить его с установленной версией «major.minor» Flash Player из Capabilities.version , но поскольку байты целевой версии SWF Flash Player (в настоящее время) увеличиваются с каждым второстепенным приращением версии Flash Player, невозможно сопоставить целевой байт SWF (byteArray [3]) с будущими версиями major.minor Flash Player, пока мы не узнаем, каким будет максимальный младший номер версии текущего Flash Player.

Надеюсь, кому-нибудь еще, столкнувшемуся с этим, повезет больше, чем мы.

0 голосов
/ 07 июля 2017

У меня была эта ошибка в очень маленьком проекте с cs3 flash9.Так что я смог отследить эту ошибку.

ПРИМЕЧАНИЕ: эта ошибка выдается неправильно.Причиной ошибки в моем проекте было НЕ из-за неисправного SWF, потому что я не импортирую SWF в свой проект.

ПРИЧИНА: У меня была строка кода, написанная так: _mc.my_counter && _mc.my_counter -;

РЕШЕНИЕ: я изменил строку следующим образом: if (_mc.my_counter) _mc.my_counter -;

... и сообщение об ошибке проверки пропало так быстро, какэто появилось.Похоже, это настоящая ошибка as3.

0 голосов
/ 26 марта 2011

Я думаю, это может быть ошибка флэш-плеера, попробуйте отключить любое графическое ускорение или кэширование.Может быть полезно выяснить, какую графическую карту они используют.

Вносили ли вы изменения в свой сервер сокетов?Вы используете как smarfoxserver?

...