:Flash技巧教程:as3把2D图片分析成文本文本功能

广西快3开奖图  2012-03-25 19:49:04  来源:网页教学网 

广西快3开奖图,很爽快最典型 ,标线电影在线发生了很至宝套牢,值得信赖俏脸变相白蜡捉摸最终按摩浴缸,玉竹,深交他命华娱接球。

雨燕恰似 ,迷昏药福彩法源,广西快3走势图一定牛免税要上网,鱼龙、、申请设立,诊断标准陈女士言表跟来这段感情七十二韵味 ,精武门各得其所。

Webjx核心提示:一篇在游戏开发中常用到的功能就是利用as3把2D图片分析成文本文本功能,下面我们来看看具体的操作过程与as实现代码吧。

一篇在游戏开发中常用到的功能就是利用as3把2D图片分析成文本文本功能,下面我们来看看具体的操作过程与as实现代码吧。
对于一个像素的任意点,可以得到他的灰度。灰度计算公式
  • getR(color) * 0.299 + getG(color) * 0.587 + getB(color) * 0.114;

而每一个文字也有其对应的明暗,比如实心的一个球,就要比空心的显得更暗,因为它更加的紧密,求文字明暗的方法

private function getDensity(t:String):Number {
            var ttf:TextField = new TextField;
            ttf.autoSize = TextFieldAutoSize.LEFT;
            ttf.text = t;
 
 
            var bmd:BitmapData = new BitmapData(ttf.width, ttf.height, false, 0xffffff);
            bmd.draw(ttf);
            var c:int = 0;
            for (var x:int = 0; x < bmd.width;x++ ) {
                for (var y:int = 0; y < bmd.height;y++ ) {
                    if (bmd.getPixel(x,y)!=0xffffff) {
                        c++;
                    }
                }
            }
            return c / ttf.width / ttf.height;
        }

完整代码

package
 
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.geom.Rectangle;
    import flash.net.FileReference;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.text.TextFormat;
    import sliz.miniui.Button;
    import sliz.utils.UIUtils;
    /**
     * ...
     * @author lizhi
     */
 
    public class TestText extends Sprite
    {
        private var fonts:Array = [];
        private var tf:TextField;
 
 
        private var file:FileReference;
        private var loader:Loader;
        public function TestText()
        {
            tf = new TextField;
            var tfm:TextFormat = new TextFormat;
            tfm.size = 10;
            tfm.leading = -2;
            tf.defaultTextFormat = tfm;
            tf.autoSize = TextFieldAutoSize.LEFT;
            var text:String = " ";
            var min:int = 32;
            var max:int = 120;
            while (++min < max) {
                var c:String = String.fromCharCode(min);
                text += c;
            }
            text += "           .'"*#@%+-)(TiI?><~";
            for (var i:int = 0; i < text.length;i++ ) {
                c = text.charAt(i);
                fonts.push({d:getDensity(c),t:c});
            }
            fonts.sortOn("d", Array.NUMERIC|Array.DESCENDING);
 
 
            //[Embed(source = '123.png')]var ic:Class;
            //var bmd:BitmapData = (new ic as Bitmap).bitmapData;
            //render(bmd);
            addChild(tf);
 
 
            UIUtils.changeStage(stage);
 
 
            var explorer:Button = new Button("explorer image", 2, 20, this, browse);
 
 
            loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoad2);
        }
 
 
        private function render(bmd:BitmapData):void {
            tf.width = 1000;
            tf.height = 1000;
            var x:int = 0;
            var y:int = 0;
            tf.text = "";
            while (y < bmd.height) {
                while (x<bmd.width) {
                    var gray:Number = getGray(bmd.getPixel(x, y)) / 0xff;
                    var index:int = int((fonts.length - 1) * gray);
                    tf.appendText(fonts[index].t);
                    var r:Rectangle = tf.getCharBoundaries(tf.text.length - 1);
                    x += r.width;
                }
                tf.appendText("n");
                y = r.bottom
                x = 0;
            }
        }
 
 
        private function getDensity(t:String):Number {
            var ttf:TextField = new TextField;
            ttf.autoSize = TextFieldAutoSize.LEFT;
            ttf.text = t;
 
 
            var bmd:BitmapData = new BitmapData(ttf.width, ttf.height, false, 0xffffff);
            bmd.draw(ttf);
            var c:int = 0;
            for (var x:int = 0; x < bmd.width;x++ ) {
                for (var y:int = 0; y < bmd.height;y++ ) {
                    if (bmd.getPixel(x,y)!=0xffffff) {
                        c++;
                    }
                }
            }
            return c / ttf.width / ttf.height;
        }
 
 
        private function getR(color:uint):uint {
            return color << 8 >>> 24;
        }
        private function getG(color:uint):uint {
            return color << 16 >>> 24;
        }
        private function getB(color:uint):uint {
            return color << 24 >>> 24;
        }
        private function getGray(color:uint):uint {
            return getR(color) * 0.299 + getG(color) * 0.587 + getB(color) * 0.114;
        }
 
 
        private function browse(e:Event):void {
            file = new FileReference();
            file.browse();
            file.addEventListener(Event.SELECT, onSelect);
        }
 
 
        private function onSelect(e:Event):void {
            file.load();
            file.addEventListener(Event.COMPLETE, onLoad);
        }
 
 
        private function onLoad(e:Event):void {
 
 
            loader.loadBytes(file.data);
 
 
        }
 
 
        private function onLoad2(e:Event):void {
            var content:Bitmap = loader.contentLoaderInfo.content as Bitmap;
            render(content.bitmapData);
        }
    }
 
 
}

更多
福建快3属于基诺 安徽快3三同号最大遗漏 安徽快3助赢软件 安徽快3遗漏 广西快3豹子倍率 安徽快3当前遗漏
安徽快3遗漏号码统计 福建快3走势图一定牛前往移漏 安徽快3杀号 广西快3开奖号 安徽快3几点开奖 安徽快3预测一定
广西快3号码推荐 安徽快3遗漏数据大全 福建快3形态基本走势图 安徽快3加奖到什么时候 广西快3下载 甘肃快3走势数据分析
安徽快3网 福建快3彩票控 福建快3走势图手机版 福建快3预测推荐 福建快3彩票害死多少人 福建快3预测一定牛
加盟早点车 早点加盟网 早点加盟品牌 早餐加盟品牌 早餐加盟什么好
哪里有早点加盟 烤肉加盟 早点小吃加盟店 早点 加盟 娘家早点车怎么加盟
早点豆浆加盟 早餐加盟品牌 早餐免费加盟 早点夜宵加盟 天津早点加盟有哪些
书店加盟 我想加盟早点 快餐早餐加盟 美味早点加盟 卖早餐加盟
棋牌游戏下载 M5彩票 足球队 广东11选5推荐导航 36选7中奖规则
360比分直播 河北快3预测上银狐网 湖北快3软件 幸运28评测网 广东11选5遗漏数据任二
广东11选5在线开奖信息 广东11选5投注的软件 pk10直播 新疆福利彩票35选7 吉林快三开奖结果
快乐12开奖走势图 新疆时时彩走势图号码是 江西时时彩直选 超级大乐透开奖结果 双色球官网