5

これはうまくいけば、新しい問題か、明らかな何かが欠けているだけです。助けてください!AS3 アプリケーションにフォントを埋め込んでいます。私はすべてを本でやっていますが、半分はうまくいきます。

私のメインクラスでは、

    [Embed(source="Art/moolbor.ttf", fontFamily="MoolEmbed", 
        mimeType="application/x-font")]
    var MoolEmbed:Class;

その後、私のコードで:

    var newFormat:TextFormat = new TextFormat();
    newFormat.font = "MoolEmbed";
    newFormat.size = 20;
    newFormat.color = 0xFCF374;

    year.autoSize = TextFieldAutoSize.LEFT;
    year.text = "Hello World";
    year.embedFonts = true;
    year.setTextFormat(newFormat);
    year.antiAliasType = "advanced";

これは問題なく機能し、テキストは美しく表示されます。回転させたり、アルファを適用したり、きれいにアンチエイリアス処理したりできます。問題は、テキストフィールドが動的であることです-コードの後半:

    year.text = "And a second hello world";

このコードがトリガーされるとすぐに、テキストフィールドは完全に消えます。オンにします

    year.border = true;

テキストフィールドがまだ残っていることがわかりますが、サイズはわずか数ピクセルに縮小されています。おそらく autoSize のせいだと思っていたのですが、

    //year.autoSize = ...;

同じ問題。埋め込みかもしれないと思って、次の行をコメントアウトしました。

    //year.embedFonts = true;

テキストフィールドは作業状態に戻りますが、(当然のことながら) アルファと回転を行う機能が失われます。

何が起こっているのか分かりますか?

4

4 に答える 4

13

これが機能しない理由として、考えられる理由について、長いおしゃべりなエントリを書きました。しかし、コードを読み直したときに、エラーを見つけたと思います。行を変更します。

year.setTextFormat(newFormat);

に:

year.defaultTextFormat = newFormat;

それはそれを行う必要があります!

于 2009-11-17T15:55:40.727 に答える
3

defaultTextFormat が機能しなかったため、他の 2 つのヒントの組み合わせが機能しました

import flash.text.Font;

コンストラクターで:

Font.registerFont(MoolEmbed)

その後

text プロパティを 2 回目に設定した後、必ず setTextFormat(newFormat) を再度呼び出してください。

于 2010-09-23T18:52:31.740 に答える
0

text プロパティを 2 回目に設定した後、必ず setTextFormat(newFormat) を再度呼び出してください。

于 2009-11-17T04:38:15.197 に答える
0

フォントをグローバル フォント リストに登録する必要があります。

輸入:

import flash.text.Font;

コンストラクターで:

Font.registerFont(MoolEmbed)
于 2009-11-16T20:49:41.963 に答える