3

次の例を Flash Builder 4 で動作させようとしています。

http://developer.yahoo.com/flash/articles/runtime-fonts-as3.html

Actionscript プロジェクトはコンパイルされますが、画面に表示されるのは、回転した小さな正方形だけで、テキストはありません。

なぜこれが起こっているのか誰にも分かりますか?私のコードは上記の例と同じです - 最初のクラスを _Arial.swf にコンパイルしました。

編集

私もこれを試しました:

package {  
    import flash.display.Sprite;  
    import flash.display.Loader;  
    import flash.events.Event;  
    import flash.net.URLRequest;  
    import flash.text.*;  

    public class _Arial extends Sprite {
        [Embed(source='C:/WINDOWS/Fonts/ARIAL.TTF', fontName='_Arial', fontFamily='myFont', mimeType='application/x-font')]  
        public static var _Arial:Class;  

        public function _Arial():void {  
            drawText();
        }

        public function drawText():void {  
            var tf:TextField = new TextField();  
            tf.defaultTextFormat = new TextFormat("_Arial",60,0);
            tf.embedFonts = true;  
            tf.antiAliasType = AntiAliasType.ADVANCED;  
            tf.autoSize = TextFieldAutoSize.LEFT;  
            tf.border = true;  
            tf.text = "Scott was here\nScott was here too\nblah scott...:;*&^% ";  
            tf.rotation =  15;
            addChild(tf);
            trace(Font.enumerateFonts());
        }  
    }
}


var fontList:Array = Font.enumerateFonts(false);
for (var i:uint=0; i<fontList.length; i++) {
    trace("font: "+fontList[i].fontName);
}

トレースの表示: font: _Arial

4

4 に答える 4

4

わかりました、動作しました...これから始めました

   public class _Arial extends Sprite
{

    [Embed(source='fonts/Arial.ttf', fontName='_Arial',
    mimeType="application/x-font-truetype",
        unicodeRange='U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E',
    embedAsCFF= "false")]
    public static var _Arial:Class; 

}

それをテストするために、私はそれを追加しました

  public function _Arial():void
  {
    var tf:TextField = new TextField();
    tf.defaultTextFormat = new TextFormat ( "_Arial" , 24 , 0 );
    tf.autoSize = TextFieldAutoSize.LEFT;           
            tf.embedFonts = true;
    tf.text = "This is some text to test!";
    tf.rotation = 20;
    addChild(tf);

  }

テキストが表示されたので、コンストラクターを削除してコード例を再試行しましたが、機能しました。

于 2010-08-14T01:31:05.157 に答える
1

フォントSWFはコンパイルされますが、そのクラスにテキストフィールドを追加し、そのフォントを使用して、embedFontsがtrueに設定されていることを確認し、必要に応じてテキストフィールドを回転させて、テキストがテキストであることを確認するだけで、フォントが正しく埋め込まれていることを確認できます。が表示されます。そのレベルで機能しない場合は、これ以上先に進む必要はありません...

その段階の後、コードは非常に単純で、どこでうまくいかないのかわかりません

編集

コメントで述べたように、コード例を複製できませんでした。あなたと同じ結果が得られます。

それを機能させる唯一の方法は、フォントを直接埋め込むことでした。これは私がよく行うことです。

[Embed(source='fonts/Arial.ttf', fontName='_Arial', 
    mimeType="application/x-font-truetype",
    unicodeRange='U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-   U+0060,U+0061-U+007A,U+007B-U+007E',
    embedAsCFF= "false")]
    public class Main extends Sprite
    {
        public function Main():void
        {
          drawText();
        }
    }

私は最終的にサンプルコードを複製しようとし、すぐに答えを確認します...

于 2010-08-13T14:32:31.697 に答える
1

名前付けに問題があります。クラスは と呼ばれ_Arialますが、埋め込むフォントに同じクラス名を付けます。それがそもそも問題を引き起こしています。

次に、埋め込みフォントを使用するには、次のように使用します。

// embed the font
[Embed(source='C:/WINDOWS/Fonts/ARIAL.TTF', fontName='_Arial', mimeType='application/x-font')]  
public static var ArialFont:Class;


// use the font
var someTextFormat:TextFormat = new TextFormat( '_Arial', 12 );
于 2010-08-13T21:10:13.563 に答える
0

上記のコードの埋め込みステートメントについて、コンパイラは、ファイル システムのルートではなく、ソース パスを基準にしてフォントを検索しようとしているのだろうかと思います。プロジェクトの src フォルダーの下にある assets フォルダーにフォント ファイルをコピーしてみます。次に、埋め込みステートメントで「/assets/ARIAL.TTF」として参照します。それが役立つことを願っています。

于 2010-08-13T20:46:04.610 に答える