У меня есть программа Adobe Flash 10, которая в некоторых случаях зависает, но только при работе с выпущенной версией флэш-плеера. С отладочной версией приложение работает нормально.
Каковы наилучшие подходы к устранению таких проблем? Я подумал об установке проигрывателя релизов на мой компьютер и попытался установить какой-то неграфический метод вывода (я думаю, что есть какой-то способ записать файл журнала или что-то подобное?), Однако я не вижу способа получить и релиз, и Все равно отладочные версии установлены :(.
РЕДАКТИРОВАТЬ: Хорошо, мне удалось заменить мою версию флеш-плеера на версию релиза, и я не зависал ... так что я знаю пока:
Flash: Debug Release
Vista 32: works works
XP PRO 32: works* freeze
- Я дал им отладочные плееры, которые я должен был протестировать
Хм, все меньше и меньше похоже на ошибку в моем коде и больше похоже на ошибку в плеере (10.0.45.2 во всех случаях) ... По крайней мере, id хотел бы видеть колл-стэк в той точке, где он зависает. Есть ли какой-то способ сделать это, не требуя от них установки различных частей, например, позволив flash записать log.txt или что-то подобное функции «trace», которую я могу вставить в рассматриваемый код?
EDIT2: я только что передал swf другому человеку с XP 32bit, такие же результаты: (
EDIT3:
Хорошо, благодаря широкому использованию flash.external.ExternalInterface.call ("alert", "..."); Мне удалось найти точную строку, вызывающую проблему (я также улучшил код обработки исключений, поэтому вместо того, чтобы заморозить его, мне сказали, что существует «необработанное» исключение). Проблема теперь в том, что, черт возьми, мигает проблема с этим с выпуском плеера на некоторых машинах ...
particles.push(p);
Что вызывает ошибку TypeError # 1034 на указанных платформах. Частицы - это вектор. , р - частица. Я протестировал с getQualifiedClassName и получил:
getQualifiedClassName (p) = :: Particle
getQualifiedClassName (частицы) = __AS3 __. vec :: Vector. <:: Particle>
Есть идеи, почему это проблема и что нужно сделать, чтобы она работала?
EDIT4:
Хорошо, похоже, я решил это. Класс Particle - это простой внутренний класс, расположенный после пакета {...} в файле сценария действия, в котором он используется. Я переместил это в его собственный файл (частицы.as) и сделал его соответствующим публичным классом в моем пакете, и проблема решена.
Может быть, это ошибка во флэш-памяти или я пропустил заметку о том, что я не использую внутренние классы в векторах или что-то в этом роде, хотя в этом случае я бы ожидал, что что-то или другое (во время компиляции или во время выполнения отладки) явно запретит это например, какая-то ошибка в "частном var частиц: Vector. ;" линия. Если у меня появится возможность, я думаю, что я обращусь к контактной группе Adobe по поводу этого или чего-то еще.
Спасибо за помощь в предоставлении советов по отладке, которые, я думаю, больше соответствуют оригинальным вопросам:)