2011-02-11 21 views
0

私はFlash CS4でAS3プロジェクトを使用していますが、その場所はXMLで渡されるフォントで動的に読み込まれます。これは、フォント名(ここではEASTERAR.TTF)に書き込むときに機能します。しかし、変数に置き換えると、無効なメタデータエラーが発生します。どのように解決することができますか?as3動的にランタイムフォントを埋め込む

細かい

[Embed(source='C:/fonts11/EASTERAR.TTF', fontFamily="xyz")] 

var xyz:Class; 

var arialEmbeddedFont:Font = new xyz(); 

var textFormat:TextFormat = new TextFormat(); 
textFormat.color = 0xFF0000; 
textFormat.font = arialEmbeddedFont.fontName; 
textFormat.size = 32; 

var textField:TextField = new TextField(); 
textField.autoSize = TextFieldAutoSize.LEFT; 
textField.wordWrap = true; 
textField.defaultTextFormat = textFormat; 
textField.embedFonts = true; 
textField.text = "rohan"; 
textField.width = 500; 
textField.x = 25; 
textField.y = 25; 
addChild(textField); 

作品が

var fontname:String = 'EASTERAR.TTF' 
[Embed(source='C:/fonts11/'+fontname, fontFamily="xyz")] 

メタデータのエラーを表示してくれてありがとう。

答えて

2

Embedメタタグで変数を使用することはできません(実際には、どのメタでも使用できません)。
また、実行時にフォントを埋め込むことができないと思わないでください。

swfにフォントを埋め込み、実行時にこのファイルを動的に読み込むことができます。

例:
新しいFLAファイルを作成し、フォントを埋め込み、ActionScriptに書き出してからファイルを書き出します。今
、以前のSWFをダウンロードして、ロードされたSWF内のフォントへのアクセスを得るためにgetDefinitionByNameflash.utils.getDefinitionByName)を使用するためにはURLLoaderを使用して、別のFLAを作成します。 テキストのフォントを新しいフォントに変更できます。

+0

var fontname:String = 'EASTERAR.TTF' [埋め込み型(source = 'C:/ fonts11 /' + fontname、fontFamily = "xyz")] – rohan

+1

'public var FontName:String =" verdana.ttf ";埋め込みメタ情報がコンパイル時にコンパイルされ、解釈されるため、[Embed(source = FontName、fontName = "Verdana")] public var EmbeddedFont:Class;そこに変数を置くと、その値が変わる(変化する)ことを伝えています。それは何を破壊するのでしょう。次に、渡すことができる唯一の値は文字列と数字です。離れているものは、エラーにつながる定数文字列として扱われます。 – NemoStein

関連する問題