文本抗锯齿是由代码控制还是嵌入?我想要做的是获取其他人制作的swf文件,找到swf文件中的所有文本,并将所有抗锯齿模式从动画更改为可读性。它在as3中是否有效?老实说,我还没有在代码中尝试过任何抗锯齿。
答案 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;
});
}
刚刚进行了快速测试 - 按照描述进行工作。