: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大品牌 早点店加盟 早餐肠粉加盟
早点面条加盟 早点小吃加盟连锁 特色早点小吃加盟店 早餐连锁店 连锁早餐加盟
广式早餐加盟 早点加盟项目 豆浆早餐加盟 早点招聘 动漫加盟
上海早点加盟 豆浆早餐加盟 特色早点加盟店排行榜 全国连锁加盟 早点小吃店加盟
北京pk10官网开奖结果 重庆幸运农场计划 幸运飞艇怎么看冠亚和 幸运飞艇计划手机版 幸运飞艇开奖比分
重庆幸运农场软件下载 幸运飞艇开奖直播连接 北京赛车官网开奖 pk10北京赛车论坛 幸运飞艇pk10稳赚计划
幸运农场是假的吗 幸运飞艇稳赚公式 北京赛车害死多少人了 北京pk10高手赌法 幸运飞艇冠亚和走势图皇家彩世界
重庆幸运农场开奖直播 pk10论坛 幸运飞艇 重庆幸运农场网上购买 幸运飞艇历史开奖记录