Flash AS3,是由代码控制的文本抗锯齿吗?

时间:2010-12-06 19:39:16

标签: actionscript-3 text fonts antialiasing embedded-fonts

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

1 个答案:

答案 0 :(得分:8)

您可以将文本字段的antiAliasType设置为'advanced',这样可以精确控制清晰度和粗细。但是,必须嵌入字体(包括:textfield必须将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;
    });
}

刚刚进行了快速测试 - 按照描述进行工作。