Креш флеш плеера. А вам слабо?

Апрель 18th, 2010 автор: Oleg Antipov

Тут меня уже пару недель мучает одна замечательная бага – в случайный момент времени флеш плеер на моей игрушке просто крешится и предлагает отправить отчёт к какой-то там матери. Меня это очень сильно печалило – ведь никаких недокументированных функций и сторонних библиотек я не использовал. Да мой код может содержать ошибки, но флеш должен мне о них вежливо сообщать в специальном окошечке а не рушится с грохотом, блин.

По началу я даже пытался отладить это дело – понатыкал везде trace-ов в начале и в конце каждой важной функции игры. Дело осложнялось тем что бага возникала не на каждом втором, а то и десятом запуске игры. Путём неимоверных усилий установил что мои функции тут ни причём – трейс возвращал успешное завершение каждой. Ломалось гдето внутри плеера.

В конце концов я поймал глюк на этом участке кода:

		   public function cleenUP():void
		   {
			           return; //ТУТ RETURN!
 
			           	var i:int;
 
				i = fxObjects.length;
				while (i--) 
				{
					//тут многа кода
				}
 
			           //Очищаем пули
				i = projObjects.length;
				while (i--) 
				{
					//тут ещё многа кода
				} 
 
				//тут ещё многа кода
 
}

Этот код даёт креш флеш плеера. Всегда. Если return в начале функции убрать всё работает хорошо, но тогда падение происходит гдето ещё… Если закомментировать один или оба цикла while всё хорошо (даже с return).

Создание flash игр

Вот скажите какого хрена тут происходит? Колдунство не иначе. Причём я установил что эта функция отрабатывает нормально в первом кадре onEnterFrame, а падает только во втором…

После двух недельных мучений и, посовещавшись с Вадимом, решил проблему весьма радикальным способом – установил себе Flash CS4 вместо CS3, и (тьфу-тьфу-тьфу!) креш вроде бы исчез. Сегодня весь день гонял игрушку и всё было окей.

Пользуясь случаем хочу передать искренний и пламенный привет разработчикам интерпретатора actionscript 3 для flash cs3!

Категория: Отладка, Разработка

2 Комментариев

  1. Alexander

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

  2. Oleg Antipov

    У меня стояла версия 9.0

Оставить комментарий