Теги: mxmlc
Баги в средствах разработки Flash Platform
Баги есть везде (для справки: шрединбаг, мандельбаг, борбаг), в том числе в mxmlc и Adobe Flex Builder 3. Попробую перечислить опасные и поедающие время баги - а это обычно те, которые абсолютно нелогичны (Ваши варианты в комментах).
- Ранний return в функции: если в начале функции поставить return, то в некоторых случаях это ведет к обрушению компилятора.
Memory-leak при использовании локальной переменной в конструкторе класса - она становится членом класса (гейзенбаг, сейчас повторить не удалось. Источник - Игорь “peace").
- public function ClassConstructor()
- {
- // Иногда при подобном объявлении у экземпляров
- // класса будет появляться поле clip и данный объект
- // не будет собран Garbage Collector'ом.
- var clip:MovieClip = new MovieClip();
- }
Если попробуете запустить профайлер на проект из 1 класса с одной строкой похожего кода в конструкторе то получите Runtime Exception c упоминанием некоего faramir’а
При использовании Embed-метатегов для включения .SWF-файлов в проект встроенные в этот файл шрифты часто (не при каждом запуске одного и того же приложения) заменяют собой аналогичные встроенные в родительский проект.
Например, если у Вас в asset-ах проекта есть надписи статическим текстом со сглаживанием, то при его embed-е Вы сможете пользоваться только теми буквами, что были включены в тот шрифт
(Источник - Филлип “FSB” Бондарев)При загрузке внешнего .SWF-файла с заранее (во Flash IDE) созданными там динамическими текстовыми полями Вам не удаться использовать в них встроенный шрифт основного ролика (Источник - Филлип “FSB” Бондарев).
Это справедливо также для случая, когда Вы вытаскиваете класс символа с существующими там динамическими текстовыми полями через ApplicationDomain.getDefinition() из загруженного файла и инстанциируете его уже в главном проекте
Подборка багов из Adobe Bug and Issue Tracking System
Ошибка компилятора:
- var num = 0.0.8;
Ошибка компилятора:
- function read():int
- {
- return 0;
- }
- function mouseClick(event:MouseEvent):void
- {
- var i: int;
- switch (i = read())
- {
- default:
- do
- {
- i = read();
- }
- while (i != 0);
- trace("OK");
- }
- }
Превращение в бесконечный цикл:
- function makeMeMyError():void
- {
- var a:Array = [];
- var i:uint = 0;
- while (false)
- {
- a[i++]=0;
- continue;
- }
- }
Ошибка компилятора:
- switch (param)
- {
- case 'one' :
- // the following line throws an #1010 Error
- var operations1:XML = company.department.(@title == "Operations")[0];
- trace(operations1);
- break;
- case 'two' :
- // no crash here
- var operations2:XML;
- operations2 = company.department.(@title == "Operations")[0];
- trace(operations2);
- break;
- }
- Пустой свич - ошибка компилятора:
- switch (i)
- {
- }
И финальный аккорд: обрушение браузера / виртуальной машины.
- "".lastIndexOf(null);
P.S: Я рассмотрел только баги компилятора и багоподобные особенности виртуальной машины. Issue по Flex Builder (их сейчас 795) и по другим продуктам к Вашим услугам всегда - Adobe Bug and Issue Tracking System.




