|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ActionScript是一种程序语言的简单文本文件.FLA档案能够直接包含ActionScript。
poluoluo中心提醒:一篇在游戏开辟中经常使用到的功效就是使用as3把2D图片剖析成文本文本功效,上面我们来看看详细的操纵历程与as完成代码吧。
一篇在游戏开辟中经常使用到的功效就是使用as3把2D图片剖析成文本文本功效,上面我们来看看详细的操纵历程与as完成代码吧。
关于一个像素的恣意点,能够失掉他的灰度。灰度盘算公式
- getR(color)*0.299+getG(color)*0.587+getB(color)*0.114;
而每个笔墨也有其对应的明暗,好比实心的一个球,就要比空心的显得更暗,由于它加倍的严密,求笔墨明暗的办法
privatefunctiongetDensity(t:String):Number{
varttf:TextField=newTextField;
ttf.autoSize=TextFieldAutoSize.LEFT;
ttf.text=t;
varbmd:BitmapData=newBitmapData(ttf.width,ttf.height,false,0xffffff);
bmd.draw(ttf);
varc:int=0;
for(varx:int=0;x<bmd.width;x++){
for(vary:int=0;y<bmd.height;y++){
if(bmd.getPixel(x,y)!=0xffffff){
c++;
}
}
}
returnc/ttf.width/ttf.height;
}
完全代码
package
{
importFlash.display.Bitmap;
importflash.display.BitmapData;
importflash.display.Loader;
importflash.display.Sprite;
importflash.events.Event;
importflash.geom.Rectangle;
importflash.net.FileReference;
importflash.text.TextField;
importflash.text.TextFieldAutoSize;
importflash.text.TextFormat;
importsliz.miniui.Button;
importsliz.utils.UIUtils;
/**
*...
*@authorlizhi
*/
publicclassTestTextextendsSprite
{
privatevarfonts:Array=[];
privatevartf:TextField;
privatevarfile:FileReference;
privatevarloader:Loader;
publicfunctionTestText()
{
tf=newTextField;
vartfm:TextFormat=newTextFormat;
tfm.size=10;
tfm.leading=-2;
tf.defaultTextFormat=tfm;
tf.autoSize=TextFieldAutoSize.LEFT;
vartext:String="";
varmin:int=32;
varmax:int=120;
while(++min<max){
varc:String=String.fromCharCode(min);
text+=c;
}
text+="."*#@%+-)(TiI?><~";
for(vari: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)]varic:Class;
//varbmd:BitmapData=(newicasBitmap).bitmapData;
//render(bmd);
addChild(tf);
UIUtils.changeStage(stage);
varexplorer:Button=newButton("explorerimage",2,20,this,browse);
loader=newLoader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoad2);
}
privatefunctionrender(bmd:BitmapData):void{
tf.width=1000;
tf.height=1000;
varx:int=0;
vary:int=0;
tf.text="";
while(y<bmd.height){
while(x<bmd.width){
vargray:Number=getGray(bmd.getPixel(x,y))/0xff;
varindex:int=int((fonts.length-1)*gray);
tf.appendText(fonts[index].t);
varr:Rectangle=tf.getCharBoundaries(tf.text.length-1);
x+=r.width;
}
tf.appendText("n");
y=r.bottom
x=0;
}
}
privatefunctiongetDensity(t:String):Number{
varttf:TextField=newTextField;
ttf.autoSize=TextFieldAutoSize.LEFT;
ttf.text=t;
varbmd:BitmapData=newBitmapData(ttf.width,ttf.height,false,0xffffff);
bmd.draw(ttf);
varc:int=0;
for(varx:int=0;x<bmd.width;x++){
for(vary:int=0;y<bmd.height;y++){
if(bmd.getPixel(x,y)!=0xffffff){
c++;
}
}
}
returnc/ttf.width/ttf.height;
}
privatefunctiongetR(color:uint):uint{
returncolor<<8>>>24;
}
privatefunctiongetG(color:uint):uint{
returncolor<<16>>>24;
}
privatefunctiongetB(color:uint):uint{
returncolor<<24>>>24;
}
privatefunctiongetGray(color:uint):uint{
returngetR(color)*0.299+getG(color)*0.587+getB(color)*0.114;
}
privatefunctionbrowse(e:Event):void{
file=newFileReference();
file.browse();
file.addEventListener(Event.SELECT,onSelect);
}
privatefunctiononSelect(e:Event):void{
file.load();
file.addEventListener(Event.COMPLETE,onLoad);
}
privatefunctiononLoad(e:Event):void{
loader.loadBytes(file.data);
}
privatefunctiononLoad2(e:Event):void{
varcontent:Bitmap=loader.contentLoaderInfo.contentasBitmap;
render(content.bitmapData);
}
}
}
用flash动画制作软件制作的动画文件很小,这样便于在互联网上传输,而且它采用了流技术,只要下载一部分,就能欣赏动画,而且能一边播放一边传输送数据。 |
|