一篇在游戏开发中常用到的功能就是利用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:Fi |