2

文本抗锯齿是由代码控制的,还是嵌入的?我想要做的是获取别人制作的 swf 文件,找到 swf 文件中的所有文本,并将所有抗锯齿模式从动画更改为可读性。它在 as3 中是这样工作的吗?老实说,我还没有在代码中尝试过任何抗锯齿。

4

1 回答 1

8

您可以将文本字段的 antiAliasType 设置为“高级”,这样您就可以很好地控制清晰度和粗细。但是,必须嵌入字体(包括:文本字段必须将 embedFonts 设置为 true,TextFormat 对象的字体属性必须与嵌入字体的 fontName 完全相同,并且字体必须已经编译)。所以从技术上讲“有可能吗?” - 是的。它可能会按照您想要的方式工作吗?不,除非您打算使用您知道已经使用嵌入式字体的 swiff。那么您需要从加载的 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 回答