Вы также можете заставить его работать с переменными-членами, извлекая имя класса, автоматически сгенерированного mxmlc
.Например, вот тот же класс Bundle
снова:
// Bundle.as
package
{
import flash.display.*;
public class Bundle extends Sprite
{
[Embed(source='image.jpg')]
private var imageClass:Class;
public function Bundle()
{
var image:DisplayObject = new imageClass();
addChild(image);
}
}
}
Теперь, если вы скомпилируете его с -keep
:
mxmlc Bundle.as -keep
Вы можете найти сгенерированный код в файле с именемBundle_imageClass.as
в каталоге generated
со следующим содержимым:
package
{
import mx.core.BitmapAsset;
[ExcludeClass]
[Embed(_resolvedSource="/Users/manish/Code/test/image.jpg", _column="6", source="image.jpg", exportSymbol="Bundle_imageClass", _line="9", _file="/Users/manish/Code/test/Bundle.as")]
public class Bundle_imageClass extends mx.core.BitmapAsset
{
public function Bundle_imageClass()
{
super();
}
}
}
Найдите exportSymbol
.Это имя вашего символа для встраивания в другие SWF-файлы.
Теперь класс Application
:
// Application.as
package
{
import flash.display.*;
public class Application extends Sprite
{
[Embed(source='Bundle.swf', symbol='Bundle_imageClass')]
private var imageClass:Class;
public function Application()
{
var image:DisplayObject = new imageClass();
addChild(image);
}
}
}
Используйте точное значение, которое вы найдете в exportSymbol
в сгенерированном коде (в данном случае, Bundle_imageClass
), и тебе должно быть хорошо.