Показать сообщение отдельно
Старый 09.09.2010, 11:44
Касеал вне форума Посмотреть профиль Отправить личное сообщение для Касеал Найти все сообщения от Касеал
  № 1  
Ответить с цитированием
Касеал

Регистрация: Dec 2008
Сообщений: 17
По умолчанию Регистрация шрифтов из загруженного swf

Следующая ситуация. Есть swf-загрузчик. Есть основная флешка и есть флешка со шрифтами. Последняя, состоит из шрифтов добавленных в библиотеку: Arial, ArialBold, ArialItalic ...

Нужно, загрузчиком подгрузить шрифты, потом подгрузить основную флешку. В основной флешке зарегистрировать загруженные шрифты.

Привожу частично код того, что я делаю для этого:

Код AS3:
 
fontLoader = new Loader();
 
fontLoader.contentLoaderInfo.addEventListener(Event.INIT, eventFontLoaderInit);
 
fontLoader.load(new URLRequest('fonts.swf'));
 
private function eventFontLoaderInit(e:Event):void
{
  StaticFonts.Arial = fontLoader.contentLoaderInfo.applicationDomain.getDefinition("Arial") as Class;
  StaticFonts.ArialBold = fontLoader.contentLoaderInfo.applicationDomain.getDefinition("ArialBold") as Class;
//и т.д.
 
  mainLoader = new Loader();
 
  mainLoader.contentLoaderInfo.addEventListener(Event.INIT, eventMainLoaderInit);
 
  mainLoader.load(new URLRequest('main.swf'));
}//StaticFonts - класс со статическими переменными
 
private function eventMainLoaderInit(e:Event):void
{
  addChild(LoaderInfo(e.target).content);
}
 
//В конструкторе главной флешки регистрирую загруженные шрифты. Добавляю тектовое поле и ставлю ему шрифт Arial. Результат - шрифт не отображается.
 
Font.registerFont(StaticFonts.Arial);
Font.registerFont(StaticFonts.ArialBold);
//...
trace(Font.enumerateFonts());//[object Arial],[object ArialBold]...
 
var tf:TextField = new TextField();
 
tf.embedFonts = true;
tf.text = 'Some text';
 
var f:TextFormat = new TextFormat();
 
f.size = 12;
f.font = 'Arial';
 
tf.setTextFormat(f);
 
addChild(tf);


Последний раз редактировалось Касеал; 09.09.2010 в 12:26.