Просмотр полной версии : embed-шрифты в подгружаемых swf
Monade 2
22.06.2012, 23:18
здравствуйте, есть вопрос.
есть "главный" файл swf, который подгружает еще несколько флэшек. в них - динамические текстовые поля. чтобы применить к ним сглаживание текста, флэш настойчиво требует импортировать наверное эти шрифты, ну заэмбедить короче, не знаю как по-русски сказать.
в каждый файл пихать один и тот же шрифт, понятное дело, не с руки. есть ли способы импортировать шрифт один раз (в главный файл или в любой другой) и использовать его в подгружаемых?
заранее спасибо
PainKiller
23.06.2012, 00:34
Можно. Эмбедите во флешку шрифт(ы) таким образом:
package
{
import flash.display.MovieClip;
import flash.system.ApplicationDomain;
public class Agfriquer extends MovieClip
{
[Embed(source = "AG Friquer/AGFriquerC.otf", fontName="AGFriquerC", fontStyle="normal", fontWeight="normal", mimeType="application/x-font", advancedAntiAliasing="true", embedAsCFF="false")]
public var AGFriquerC:Class;
[Embed(source = "AG Friquer/AGFriquerC-Bold.otf", fontName="AGFriquerC", fontStyle="normal", fontWeight="bold", mimeType="application/x-font", advancedAntiAliasing="true", embedAsCFF="false")]
public var AGFriquerCBold:Class;
[Embed(source = "AG Friquer/AGFriquerC-Italic.otf", fontName="AGFriquerC", fontStyle="italic", fontWeight="normal", mimeType="application/x-font", advancedAntiAliasing="true", embedAsCFF="false")]
public var AGFriquerCItalic:Class;
[Embed(source = "AG Friquer/AGFriquerC-BoldItalic.otf", fontName="AGFriquerC", fontStyle="italic", fontWeight="bold", mimeType="application/x-font", advancedAntiAliasing="true", embedAsCFF="false")]
public var AGFriquerCBoldItalic:Class;
public function Agfriquer()
{
Font.registerFont (AGFriquerC);
Font.registerFont (AGFriquerCBold);
Font.registerFont (AGFriquerCItalic);
Font.registerFont (AGFriquerCBoldItalic);
var embeddedFonts:Array = Font.enumerateFonts(false);
for (var i : int = 0; i < embeddedFonts.length; i++)
{
trace(embeddedFonts[i].fontName);
trace(embeddedFonts[i].fontType);
}
}
}
}
Потом грузите её в ту флешку, где будете использовать шрифт таким образом:
var fontsLoader:Loader = new Loader ();
fontsLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, fontLoaded);
fontsLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOERROR);
var context:LoaderContext = new LoaderContext();
context.applicationDomain = ApplicationDomain.currentDomain;
fontsLoader.load(new URLRequest(path), context);
private function fontLoaded(ev:Event):void // срабатывает при загрузке swf со шрифтом
{
var target:LoaderInfo = ev.target as LoaderInfo;
var mc:MovieClip = target.content as MovieClip;
addChild(mc);
}
private function onIOERROR(e:IOErrorEvent):void
{
trace("Загрузка шрифтов не удалась");
}
и все. А вообще вам надо было воспользоваться поиском по форуму таких тем тут много.
Monade 2
23.06.2012, 00:43
спасибо, попробую.
искал по тэгу embed, решения не нашел
Вроде вопрос был с точностью до наоборот..
PainKiller
23.06.2012, 01:25
Да точно :-) но это не сильно дело меняет)
Просто правильный ответ: "Ничего не надо делать". Внедренные шрифты основной флэшки итак доступны в подгруженной.
Впрочем, возможно проблемы есть, когда текстовые поля создаются ручками в IDE, и надо как-то включить полю embedFonts = true и указать шрифт, при этом как-то избежать его внедрения))) Это в коде все просто...
Добавлено через 13 часов 47 минут
Хотя не, никаких проблем. Создал поле, дал имя "txt" и написал в кадре :) :
import flash.text.TextFormat;
txt.embedFonts = true;
txt.defaultTextFormat = new TextFormat("Futura", 14, 0xFF0000);
txt.text = "wow, what a cute Font";
И поле прекрасно отобразило текст после загрузки во флэшку, в которой внедрен и зарегистрирован шрифт с именем "Futura".
Вероятно, набор флешек со шрифтами имеет смысл для выборочной загрузки.
Однозначно. Но иногда ситуация обратная — отдельные разделы или страницы сайта выполнены в виде подгружаемых модулей, и действительно нет никакого смысла внедрять в них тот же шрифт, что уже есть в базовом файле.
Это очевидно. Этого нужно избегать.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.