消除文本锯齿

  如果文本的字体稍微大些或显示器分辨率较低,就会看到文本的边缘有锯齿。当我们想要消除文本的锯齿时,可能会找到Textfield类里有一个antiAliasType属性,该属性用于此文本字段的消除锯齿类型。但该死的是该属性仅在字体为嵌入(即 embedFonts 属性设置为 true)时可以控制此设置。也就是说如果我们要用到antiAliasType来消除锯齿,就一定要用到嵌套字体。好吧,蛤如果将字体嵌套进去的话又有一个不可避免的问题,就是所嵌套的字体的体积如果过大会影响生成swf的体积,如果只选择一些字体就不灵活。不知为什么要用嵌套字体才能消除锯齿,嵌套字体和消除锯齿为什么不能分开呢?反正我是不好理解,相信也有很多人不好理解为什么要这么做。

  还有如果对字体的锯齿处理效果要求不过高的话,可以为文本添加模糊滤镜。这样锯齿看起来就不那么尖锐,看起来效果会好些。在设置模糊滤镜时自己调一下滤镜模糊度已达到好的效果。

  下面程序是利用添加模糊濾鏡淡化了鋸齒

package com.flash.UI.Util
{
    import flash.display.DisplayObject;
    import flash.filters.BlurFilter;
    import flash.text.TextField;

    public class TextBlurFilter
    {
        public function TextBlurFilter()
        {
        }
        
        public static function GetTextBlurFilter(fontSize:Number):BlurFilter{
            var blurX:Number=0;
            var blurY:Number=0;
            if(fontSize<10) return null;
            if(fontSize<12){
                blurX=blurY=1.2;
            }else if(fontSize<16){
                blurX=blurY=1.2;
            }else if(fontSize<22){
                blurX=blurY=1.25;
            }else if(fontSize<26){
                blurX=blurY=1.35;
            }else{
                blurX=blurY=1.45;
            }
            var blur:BlurFilter=new BlurFilter();
            blur.blurX=blurX;
            blur.blurY=blurY;
            blur.quality=1;
            return blur;
        }
        
        public static function SetTextBlurFilter(target:DisplayObject,fontSize:Number):void{
            var blur:BlurFilter=TextBlurFilter.GetTextBlurFilter(Number(fontSize));
            var flag:Boolean=false;
            if(blur!=null){
                var filters:Array=target.filters;
                if(filters==null){
                    filters=new Array();
                    filters.push(blur);
                }else{
                    for (var i:uint = 0; i < filters.length; i++) {
                        if (filters[i] is BlurFilter) {
                            filters[i]=blur;
                            flag=true;
                            break;
                        }
                    }
                    if(!flag){
                        filters.push(blur);    
                    }
                }
                
                target.filters=filters;
            }
        }
    }
}
posted @ 2012-05-13 18:17  skybdemq  阅读(604)  评论(0编辑  收藏  举报