Руководство по actionscript. часть 6, стр. 067
Листинг 28.15. Класс, демонстрирующий встраивание элементов на уровне переменной
package { import flash. display.*; import flash. events.*; import mx. core. MovieClipAsset; import mx. core. MovieCli pLoaderAsset;
import mx. core. SpriteAsset; import mx. core. BitmapAsset; import mx. core. ByteArrayAsset;
public class VariableLevelEmbedDemo extends Sprite { [Embed(sou rce="photo. jpg")] private var Photo:Class;
[Embed(s ou rc e="1i ne. s vg")] private var SVGLine:Class;
[Embed(source="fp9app. swf")] private var FP9App:Class;
[Embed(source="fp8app. swf", symbol="Ball")] private var FP8Ball-.Class;
[Embed(source="fp9app. swf", mi meType="appli cati on/octet-stream")] private var FP9BinaryData:Class;
public function VariableLevelEmbedDemo ( ) { // Растровое изображение, встраиваемое // на уровне переменной var photo:BitmapAsset = new Photo( ); addChild(photo);
// Файл в формате SVG, встраиваемый на уровне переменной var line:SpriteAsset = new SVGLine( ); addChild(line);
// Символ SWF-файла в формате приложения Flash Player 8, встраиваемый
// на уровне переменной
var fp8ball:MovieClipAsset = new FP8Ball( );
addChild(fp8ball);
// SWF-файл в формате приложения Flash Player 9. встраиваемый // на уровне переменной
var fp9app:MovieClipLoaderAsset = new FP9App( ); addChild(fp9app);
// Чтобы обратиться к классу символа или к обычному классу // во встроенном SWF-файле, необходимо дождаться завершения // инициализации данного SWF-файла
Loader(fр9арр. getChi1dAt(0)).contentLoaderlnfo. addEventLi stener(
Event. INIT. fp9appInitListener);
// Бинарные данные (SWF-файл в формате приложения Flash Player 9),
// встраиваемые на уровне переменной
var fp9biпаrydata:ByteArrayAsset = new FP9BinaryData( );
var loader:Loader = new Loader( );
1oader.1oadBytes(fp9bi na rydata); addChilddoader);
// Чтобы обратиться к классу символа или к обычному классу // во встроенном SWF-файле, необходимо дождаться завершения // инициализации данного SWF-файла 1oader. contentLoaderlnfo. addEventLi stener(Event. INIT,
fp9binarydataInitListener);
}
private function fp9appInitListener (e:Event):void { // Получаем ссылку на символ Ball из встроенного SWF-файла var Ball Symbol:Class =
e. ta rget. content.1oaderInfо. appli cati onDomai n. getDefi ni ti on(«Bal 1″); // Создаем новый экземпляр символа Ball var ball:MovieClip = MovieClip(new Ball Symbol( )); // Устанавливаем положение экземпляра символа Ball и помещаем его // на экран ball. х = 220; ball. у = 240; addChild(ball);
}
private function fp9binarydataInitListener (e:Event):void { // Получаем ссылку на символ Ball из встроенного SWF-файла var BallSymbol:CIass =
e. target. content.1oaderInfо. appli cati onDomai n. getDefi ni tion(«Bal 1″); // Создаем новый экземпляр символа Ball var ball.-MovieClip = MovieClip(new BallSymboK )); // Устанавливаем положение экземпляра символа Ball и помещаем его // на экран ball. у = 200; addChild(ball);
}
}
}
Очищайте проект, чтобы увидеть изменения
Мы рассмотрели несколько способов, позволяющих встроить внешний отображаемый элемент в приложение. Обычно, когда файл встраиваемого элемента изменяется, эти изменения автоматически отражаются при следующей компиляции связанного приложения. Однако в приложении Flex Builder 2 при повторной компиляции приложения изменения в элементах иногда могут не отражаться. Чтобы гарантировать, что все изменения в элементе будут отражены на этапе компиляции, очистите проект приложения, как описано ниже.