: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预测一定牛
春光早餐加盟 口口香早点加盟 绝味加盟 卖早点加盟 舒心早餐加盟
早饭加盟 北京早点车加盟 北京早点摊加盟 北京早餐车加盟 众望早餐加盟
早餐店 加盟 早餐加盟费用 早餐粥加盟 特色早餐店加盟 早点快餐加盟店
天津早点加盟车 全球加盟网 早餐加盟开店 口口香早点加盟 湖南特色早点加盟
广东快乐10分安卓 福建36选7app 群英会中奖规则和奖金 新疆11选5开奖直播 广西体彩11选5前三值
11选五玩法 青海十一选五玩法 6肖中特公开验证 703彩票app 上海快3直播
2码中特期期准三中三 新疆时时彩投注 分分彩直播 新疆喜乐彩玩法介绍 宁夏十一选五预测
深海捕鱼 安徽快3直播开奖 万料堂波叔一波中特 明仕田园图片 贵州快3计划软件