Руководство по actionscript. часть 5, стр. 127
После этого мы компилируем файл Fonts. swf и загружаем его на этапе выполнения с помощью класса Loader. Сразу после завершения загрузки файла Fonts. swf его шрифты могут быть использованы любым другим SWF-файлом, выполняющимся в приложении Flash Player. В листинге 27.15 представлен пример класса, который загружает и затем использует шрифты, встроенные в файл Fonts. swf.
1 Исчерпывающую информацию о загрузке SWF-файлов можно найти в гл. 28.
нГ 4 .
Листинг 27.15. Использование загруженных шрифтов
package { import flash. display.*; import flash. text.*;
import flash. events.*; import flash. net.*;
f
// Этот класс демонстрирует, как форматировать текст с помощью загруженных // шрифтов. Сами шрифты встроены в файл Fonts. swf, представленный ранее, public class HelloWorld extends Sprite { public function HelloWorld ( ) {
// Загружаем SWF-файл, содержащий встроенные шрифты
var loader:Loader = new Loader( );
loader. contentLoaderInfo. addEventListener(Event. INIT, initListener); 1oader.1oad(new URLRequest(«Fonts. swf»));
}
// Выполняется после завершения инициализации файла Fonts. swf, когда // его шрифты будут доступны для использования private function initListener (e:Event):void {
// Для отладочных целей отображаем все доступные встроенные шрифты
showEmbeddedFonts( );
// Шрифт был загружен, поэтому теперь отображаем // отформатированный текст outputMsg( );
}
// Отображаем текст, отформатированный с использованием
// встроенных шрифтов
private function outputMsg ( ):void {
// Создаем текстовое поле
var t:TextField = new TextField( );
t. embedFonts = true; // Говорим среде выполнения Flash отображать это
// текстовое поле с помощью встроенных шрифтов // Используем две вариации шрифта Verdana (обычного и полужирного // начертания)
t. htmlText = «Hel1 о World«;
// Добавляем текстовое поле в список отображения addChild(t);
}
// Выводит список доступных на настоящий момент встроенных шрифтов public function showEmbeddedFonts ( ):void { trace(«========Embedded Fonts========»);
var fonts-.Array = Font. enumerateFonts( ); fonts. sortOn(«fontName». Array. CASEINSENSITIVE); for (var i:int = 0; i < fonts.length; i++) { trace(fonts[i].fontname + ", " + fonts[i].fontstyle);
}
}
^ I Многие браузеры кэшируют SWF-файлы, поэтому для приложений, состоящих из нем?; j „ скольких SWF-файлов, можно добиться снижения общего времени загрузки, загружая шрифты из одного SWF-файла на этапе выполнения.