Может кто сталкивался, даже не знаю, можно ли как то с этим бороться... Кроме как отказаться от автогенеренных классов...
Суть проблемы такая.
У нас есть наш простой класс:

Код AS3:
package
{
import flash.display.MovieClip;
public class BaseMyGroup extends MovieClip
{
public function MyGroup()
{
}
}
}
Создаем во Flash символ со следующими свойствами:
Export for Action Script – включаем
Class: MyGroup
Base Class: BaseMyGroup
Внутри ложем какой ни будь другой символ с именем. Например Символ Element, с именем “_element”. Путь Element будет компонентом, в котором мы через ComponentDefinition добавили свойство «varName».
Компилируем. Затем декомпилируем чем нибудь вроде Flash Decompiler Trillix, и смотрим что получилось:

Код AS3:
//ActionScript 3.0
// class BaseMyGroup
package
{
import flash.display.*;
public class BaseMyGroup extends flash.display.MovieClip
{
public function BaseMyGroup()
{
super();
return;
}
public var _element:Element;
}
}
// class Element
package
{
import flash.display.*;
public dynamic class Element extends flash.display.MovieClip
{
public function Element()
{
super();
return;
}
}
}
// class MyGroup
package
{
import adobe.utils.*;
import flash.accessibility.*;
import flash.desktop.*;
import flash.display.*;
import flash.errors.*;
import flash.events.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.globalization.*;
import flash.media.*;
import flash.net.*;
import flash.net.drm.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.sensors.*;
import flash.system.*;
import flash.text.*;
import flash.text.engine.*;
import flash.text.ime.*;
import flash.ui.*;
import flash.utils.*;
import flash.xml.*;
public dynamic class MyGroup extends BaseMyGroup
{
public function MyGroup()
{
super();
this.__setProp__element_MyGroup_Layer1_0();
return;
}
function __setProp__element_MyGroup_Layer1_0():*
{
var loc1:*;
try
{
_element["componentInspectorSetting"] = true;
}
catch (e:Error)
{
};
_element.varName = "test";
try
{
_element["componentInspectorSetting"] = false;
}
catch (e:Error)
{
};
return;
}
}
}
И результат шокирует. Flash вместо того, что бы добавить переменную

Код AS3:
public var _element:Element;
в класс MyGroup, добавляет ее в базовый класс BaseMyGroup.
При работе в одной флэшке это конечно не сильно заментно, разве что неприятно, что если у нас много символов наследников BaseMyGroup, то в конечном счете в нем будет очень много переменных. Так как если сделать MyGroup2, с экземпляром внутри _element2, в классе BaseMyGroup после декмпиляции будет уже 2 переменные:

Код AS3:
public var _element:Element;
public var _element2:Element;
А если мы компонуем на том же FlashDevelop проект в котором подключено несколько swc в каждом из которых присутвуют наследники BaseMyGroup, то столкнемся с тем, что что-то перестанет работать. Так как в результирующем проекте будет только один экземпляр BaseMyGroup выбранный из одной из подключенных swc, а то и вовсе оригинальный, в котором нет вообще переменных. И тогда приложение будет падать в конструкторе, в строчках подобных этой:

Код AS3:
_element.varName = "test";
С ошибкой, что переменная «_element» не оепределенна, ведь она действительно не определенна...
Глюк проверен в Flash cs3 и Flash c4. Кто нибудь сталкивался с этим? Есть ли какой нибудь способ адекватно с этим бороться, не делая для каждого символа реальный класс, вроде:

Код AS3:
package {
import flash.display.MovieClip;
public class MyGroup extends BaseMyGroup {
public function MyGroup() {
// constructor code
}
}
}
?
Искренне Ваш, Джек.