2

テキストのアンチエイリアスはコードで制御されていますか、それとも埋め込まれていますか? 私がやりたいことは、他の誰かが作成した swf ファイルを取得し、swf ファイル内のすべてのテキストを見つけて、すべてのアンチエイリアス モードをアニメーションから可読性に変更することです。as3でそのように動作しますか?正直なところ、コードでアンチエイリアスをまだ試していません。

4

1 に答える 1

8

テキストフィールドのantiAliasTypeを「advanced」に設定できます。これにより、シャープネスと厚みを細かく制御できます。ただし、フォントは埋め込まれている必要があります(包括的:テキストフィールドのembedFontsがtrueに設定されている必要があり、TextFormatオブジェクトのフォントプロパティが埋め込みフォントのfontNameと完全に同じであり、フォントが既にコンパイルされている必要があります)。技術的には「それは可能ですか?」- はい。思い通りに動作する可能性がありますか?いいえ、すでに埋め込みフォントを使用していることがわかっているスウィフで作業する予定がない限り。次に、ロードされたswiffからすべてのテキストフィールドを取得する必要があります(次のようなものを使用できます:http://upshots.org/?p = 107、次にarray.filterを使用してTextFieldオブジェクトのみを取得します)、次に適用しますあなたの論理。

編集:コードサンプルの追加

// assuming you're using the DisplayList class linked above
var request:URLRequest = new URLRequest("textfields.swf");
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler, false, 0, true);
loader.load(request);

function completeHandler(event:Event):void{

    var content:DisplayObjectContainer = event.target.loader.content as DisplayObjectContainer;
    addChild(content);

    var children:Array = new DisplayList(content);
    children = children.filter(function(item:Object, index:int, array:Array):Boolean {
        return item is TextField;
    });
    children.forEach(function(item:Object, index:int, array:Array):void {
        var textfield:TextField = item as TextField;
        textfield.antiAliasType = AntiAliasType.ADVANCED;
        textfield.sharpness = 100;
        textfield.thickness = 100;
    });
}

簡単なテストを実行しただけです-説明どおりに機能します。

于 2010-12-06T19:43:34.013 に答える