Креш флеш плеера. А вам слабо?
Тут меня уже пару недель мучает одна замечательная бага – в случайный момент времени флеш плеер на моей игрушке просто крешится и предлагает отправить отчёт к какой-то там матери. Меня это очень сильно печалило – ведь никаких недокументированных функций и сторонних библиотек я не использовал. Да мой код может содержать ошибки, но флеш должен мне о них вежливо сообщать в специальном окошечке а не рушится с грохотом, блин.
По началу я даже пытался отладить это дело – понатыкал везде trace-ов в начале и в конце каждой важной функции игры. Дело осложнялось тем что бага возникала не на каждом втором, а то и десятом запуске игры. Путём неимоверных усилий установил что мои функции тут ни причём – трейс возвращал успешное завершение каждой. Ломалось гдето внутри плеера.
В конце концов я поймал глюк на этом участке кода:
public function cleenUP():void { return; //ТУТ RETURN! var i:int; i = fxObjects.length; while (i--) { //тут многа кода } //Очищаем пули i = projObjects.length; while (i--) { //тут ещё многа кода } //тут ещё многа кода }
Этот код даёт креш флеш плеера. Всегда. Если return в начале функции убрать всё работает хорошо, но тогда падение происходит гдето ещё… Если закомментировать один или оба цикла while всё хорошо (даже с return).

Вот скажите какого хрена тут происходит? Колдунство не иначе. Причём я установил что эта функция отрабатывает нормально в первом кадре onEnterFrame, а падает только во втором…
После двух недельных мучений и, посовещавшись с Вадимом, решил проблему весьма радикальным способом – установил себе Flash CS4 вместо CS3, и (тьфу-тьфу-тьфу!) креш вроде бы исчез. Сегодня весь день гонял игрушку и всё было окей.
Пользуясь случаем хочу передать искренний и пламенный привет разработчикам интерпретатора actionscript 3 для flash cs3!
Категория: Отладка, Разработка

Апрель 18th, 2010 at 11:50
У моего коллеги был как-то глюк со switch-ем, он тоже крашил плеер. Причем именно до посылки отчета в микрософт. Самое интересное крашило его именно наличие switсh-a именно в том месте кода. С любыми вариациями case, даже пустыми. На переписанный на if-ах код работал на ура.
сам сталкивался с багой когда собираешь флешку на Macromedia Flash 8, напрочь отваливалась кросс доменность. Т.е. просто не хотел ходить за crossdomain.xml. Причем сборка той же флешки в cs3, приводило ее в полный порядок.
А насчет смены версий
А cs3 был пропатченый до какой версии?
Апрель 18th, 2010 at 12:16
У меня стояла версия 9.0