PDA

Просмотр полной версии : registerFont


miramax
21.09.2006, 15:37
Прочитал в доке про этот метод класса Font. Синтаксис следующий
Font.registerFont(font:Class):void
По моим преположениям с помощью этой функции можно из подгруженных swf брать embedFonts и использовать во всём плеере.
Я не понимаю какой КЛАСС нужно передать функции в качестве аргумента.

package {
import flash.display.*;
import flash.text.*;
import flash.utils.*;

public class Mc extends Sprite {
var allFonts:Array = Font.enumerateFonts(false);
allFonts.sortOn("fontName", Array.CASEINSENSITIVE);

for(var i in allFonts)
{
trace(i+' '+allFonts[i])
trace(describeType(allFonts[i]))
}
}
}
describeType говорит что свойство fontName не меняется после того как я переназываю шрифты в библиотеке. As называет шрифт Arial "Arial". Если добавить модификацию ариала bold в библиотеку. То AS всё равно видит новый шрифт с именем Arial. Мне кажется странным возможность существования двух шрифтов с одинаковыми именами.
1. Есть ли возможность в AS 3.0 самому назвать шрифты и гарнитуры.
2. Почему при вставке в библиотеку шрифтов, AS не хочет регистрировать их классы (linkage). Какое бы имя класса я не задавал, при использовании этого класса в коде, компиллятор говорит что не знает такого.
3. как использовать Font.registerFont(font)? Ни название шрифта ни объект шрифта принимать функция не хочет. Требует какой-то КЛАСС. Какой?

john
21.09.2006, 20:05
вот нашел пример применения registerFont
в приниципе можно попробовать подгрузить swf и взять класс фонта....


<?xml version="1.0" encoding="utf-8"?>
<!-- Simple example to demonstrate the Rotate effect. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
initialize="Font.registerFont(arial_font);">

<mx:Script>
<![CDATA[

import flash.text.Font;

[Embed("assets/arial.ttf", fontName="MyArial")]
public var arial_font:Class;

[Bindable]
public var angle:int=0;

private function rotateImage():void {
rotate.end();
angle += 45;
rotate.play();
}
]]>
</mx:Script>

<mx:Rotate id="rotate" angleFrom="{angle-45}" angleTo="{angle}" target="{myVB}"/>

<mx:Panel title="Rotate Effect Example" horizontalAlign="center"
width="75%" height="75%" layout="horizontal"
paddingTop="5" paddingLeft="10" paddingRight="10" paddingBottom="5">

<mx:VBox id="myVB" width="50%" horizontalAlign="center">
<mx:Label text="Nokia 9930"
fontFamily="MyArial" fontSize="14"/>

<mx:Image id="img"
source="@Embed(source='assets/Nokia_6630.png')"/>
</mx:VBox>

<mx:Text width="50%" color="blue"
text="Click the button to rotate the image 45 degrees. Use an embedded font when applying the Rotate effect to text."/>

<mx:ControlBar>
<mx:Button label="Rotate 45 Degrees" click="rotateImage();"/>
</mx:ControlBar>
</mx:Panel>
</mx:Application>

john
21.09.2006, 20:09
вот пример динамической загрузки фонтов,

http://www.mail-archive.com/flexcoders@yahoogroups.com/msg39744.html

полезно....

miramax
21.09.2006, 20:35
Но я во флексе абсолютный нуль. Уже очень много времени потратил в пустую что бы сделать библиотеку шрифтов на Flash 9 as 3.0 preview. По мнению Nirth'а - flash 9 просто не компиллирует библиотеку шрифтов как положено. От этого появляется куча проблем.

вот нашел пример применения registerFont
в приниципе можно попробовать подгрузить swf и взять класс фонта....

Ничего не остаётся кроме того, что бы заняться флексом для решения этой проблемы... (