将游戏中某些数字动态的用上述美术数字替代, 这么做的唯一原因就是为了好看。

制作资源 , 使用Sprite Sheet:


创建一个FntManager , 用于动态生成美术字,如下:

/***@author*/moduleapp{exportclassFntManager{publicconstructor(){}privatestatic_fntMap:HashMap=newHashMap();//存储创建的位图字体/*//创建位图字体*param@1父容器*param@2位图字体资源*param@3位图显示内容*param@4预留位图字体高度***/publicstaticcreateBitmapLabel(parent:eui.Group,res:string,content:string,picHeight):eui.BitmapLabel{if(content=="NaN"||content=="undefined"){console.error("res为空");}if(parent==null)return;parent.removeChildren();varbitmaplabel=neweui.BitmapLabel();bitmaplabel.font=RES.getRes(res);bitmaplabel.text=content;bitmaplabel.y=(parent.height-picHeight)/2;parent.addChild(bitmaplabel);this._fntMap.put(parent,bitmaplabel);returnbitmaplabel;}/***不使用位图字体的位图渲染替代法*/privatestaticcreateUIAssetLable(parent:eui.Group,res:string,content:string,picHeight:number,picWidth:number,align:string):void{if(parent==null)return;varchild:number=parent.numChildren;varlen:number=content.length;for(vari:number=0;i<len;i++){if(i<child){vartmpAsset:eui.Image=<eui.Image>parent.getChildAt(i);}else{vartmpAsset:eui.Image=neweui.Image();parent.addChild(tmpAsset);}if(res!="")tmpAsset.source=RES.getRes(res+"_"+content[i]+"_png");elsetmpAsset.source=RES.getRes(content[i]+"_png");if(i>0){varlastAss:eui.Image=<eui.Image>parent.getChildAt(i-1);tmpAsset.x=lastAss.x+picWidth;}else{if(align=="left")tmpAsset.x=0;elseif(align=="middle")tmpAsset.x=0.5*(parent.width-len*picWidth);elsetmpAsset.x=parent.width-len*picWidth;}tmpAsset.y=(parent.height-picHeight)/2;}//多余的设置为空if(child>len){for(i=len;i<child;i++){vartmpAsset:eui.Image=<eui.Image>parent.getChildAt(i);tmpAsset.source=null;}}}//居中publicstaticshowFnt(parent:eui.Group,res:string,content:string,picWidth:number=24,picHeight=24):void{this.createUIAssetLable(parent,res,content,picHeight,picWidth,"middle");}//右对齐publicstaticshowFntRight(parent:eui.Group,res:string,content:string,picSize:number=24,picHeight=24):void{this.createUIAssetLable(parent,res,content,picHeight,picSize,"right");}//左对齐publicstaticshowFntLeft(parent:eui.Group,res:string,content:string,picSize:number=24,picHeight=24):void{this.createUIAssetLable(parent,res,content,picHeight,picSize,"left");}//左对齐2publicstaticshowFntLeft2(parent:eui.Group,res:string,content:string,picSize:number=24,picHeight=24):void{this.createUIAssetLable(parent,res,content,picHeight,picSize,"left");}/***删除位图字体*/publicstaticremoveFnt(p:eui.Group):void{letbLabel:eui.BitmapLabel=<eui.BitmapLabel>this._fntMap.remove(p);if(bLabel){if(bLabel.parent)(<eui.Group>bLabel.parent).removeChild(bLabel);bLabel=null;}}}}

附上HashMap的实现::

/**MAP对象,实现MAP功能**接口:*size()获取MAP元素个数*isEmpty()判断MAP是否为空*clear()删除MAP所有元素*put(key,value)向MAP中增加元素(key,value)*remove(key)删除指定KEY的元素,成功返回True,失败返回False*get(key)获取指定KEY的元素值VALUE,失败返回NULL*element(index)获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL*containsKey(key)判断MAP中是否含有指定KEY的元素*containsValue(value)判断MAP中是否含有指定VALUE的元素*values()获取MAP中所有VALUE的数组(ARRAY)*keys()获取MAP中所有KEY的数组(ARRAY)**例子:*varmap=newMap();**map.put("key","value");*varval=map.get("key")*……**/moduleapp{exportclassHashMap{privateelements:Array<IHashMapData>=newArray();publicconstructor(){}//获取MAP元素个数size():number{returnthis.elements.length;}//判断MAP是否为空isEmpty():boolean{return(this.elements.length<1);}//删除MAP所有元素clear(){this.elements=newArray();}//向MAP中增加元素(key,value)put(_key:any,_value:any){this.elements.push({key:_key,value:_value});}//删除指定KEY的元素,并返回删除的元素值remove(_key:any):any{try{for(vari:number=0;i<this.elements.length;i++){if(this.elements[i].key==_key){letvalue:any=this.elements[i].value;this.elements.splice(i,1);returnvalue;}}}catch(e){}returnnull;}//获取指定KEY的元素值VALUE,失败返回NULLget(_key:any){try{for(vari:number=0;i<this.elements.length;i++){if(this.elements[i].key==_key){returnthis.elements[i].value;}}}catch(e){returnnull;}}//获取指定索引的元素,失败返回NULLelement(_index):IHashMapData{if(_index<0||_index>=this.elements.length){returnnull;}returnthis.elements[_index];}//判断MAP中是否含有指定KEY的元素containsKey(_key:any):boolean{varbln=false;try{for(vari:number=0;i<this.elements.length;i++){if(this.elements[i].key==_key){bln=true;}}}catch(e){bln=false;}returnbln;}//判断MAP中是否含有指定VALUE的元素containsValue(_value:any):boolean{varbln=false;try{for(vari:number=0;i<this.elements.length;i++){if(this.elements[i].value==_value){bln=true;}}}catch(e){bln=false;}returnbln;}//获取MAP中所有VALUE的数组(ARRAY)values():Array<any>{vararr=newArray();for(vari=0;i<this.elements.length;i++){arr.push(this.elements[i].value);}returnarr;}//获取MAP中所有KEY的数组(ARRAY)keys():Array<any>{vararr=newArray();for(vari:number=0;i<this.elements.length;i++){arr.push(this.elements[i].key);}returnarr;}}interfaceIHashMapData{key:any;value:any;}}



调用 :::

module app {
export class FntView extends eui.Component implements eui.UIComponent{
private group_number : eui.Group;
public constructor() {
super();
this.skinName = "resource/eui_skins/FntView.exml";
}
protected childrenCreated():void{
super.childrenCreated();

this.showNumer( 1139 );
}

private showNumer( num : number ) : void{
let show : string = num.toString();
FntManager.showFnt( this.group_number , "" , show , 125 , 75 );
}
}
}

核心 :

let show : string = num.toString();
FntManager.showFnt( this.group_number , "" , show , 125 , 75 );


结果:



提供一个泛型HashMap:

modulebg2tool{/***HashMapK:键V:值*@authorHusz*/exportclassHashMap<K,V>{private_content:Array<IConten2MapHash<K,V>>=null;publicconstructor(){this._content=[];}/***是否存在此键*@param{K}key键值*@returns{boolean}是否存在*/publiccontainsKey(key:K):boolean{let$cell:IConten2MapHash<K,V>=null;for(let$i:number=0,$j:number=this._content.length;$i<$j;$i++){$cell=this._content[$i];if($cell.key==key){returntrue;}}returnfalse;}/***是否存在此值*@param{V}value值*@returns{boolean}是否存在*/publiccontainsValue(value:V):boolean{varlength:number=this._content.length;let$cell:IConten2MapHash<K,V>=null;for(let$i:number=0;$i<length;$i++){$cell=this._content[$i];if($cell.value==value){returntrue;}}returnfalse;}/***添加一个键值对*@param{K}key*@param{V}value*@returns{number}*/publicadd(key:K,value:V):number{if(key==null){console.log("[HashMap]Cannotputavaluewithundefinedornullkey!");returnthis._content.length;}if(!this.containsKey(key)){this._content.push({"key":key,"value":value})}returnthis._content.length;}/***移除一个键值对,并返回值*@param{K}key*@returns{V}*/publicremove(key:K):V{if(!this.containsKey(key)){returnnull;}let$cell:IConten2MapHash<K,V>=null;for(let$i:number=0,$j:number=this._content.length;$i<$j;$i++){$cell=this._content[$i];if($cell.key==key){this._content.splice($i,1);return$cell.value;}}returnnull;}/***移除第一个键值对,并返回值(只有值)*@returns{V}*/publicremoveFirst():V{if(this._content.length>0){let$cell:IConten2MapHash<K,V>=this._content.shift();return$cell.value;}returnnull;}/***移除第一个键值对,并返回键值对*@returns{bg2tool.IConten2MapHash<K,V>}*/publicshift():IConten2MapHash<K,V>{if(this._content.length>0){let$cell:IConten2MapHash<K,V>=this._content.shift();return$cell;}returnnull;}/***清除所有键值对*/publicclear():void{this._content.length=0;}/***复制HashMap*@returns{HashMap<K,V>}*/publicclone():HashMap<K,V>{varhashMap:HashMap<K,V>=newHashMap<K,V>();let$cell:IConten2MapHash<K,V>=null;for(let$i:number=0,$j:number=this._content.length;$i<$j;$i++){$cell=this._content[$i];hashMap.add($cell.key,$cell.value);}returnhashMap;}/***键值对是否为空*@returns{boolean}*/publicisEmpty():boolean{returnthis._content.length==0;}/***键值对的个数(只读)*@returns{number}*/publicgetlength():number{returnthis._content.length;}/***获取键*@param{V}value*@returns{K}*/publicgetKey(value:V):K{let$cell:IConten2MapHash<K,V>=null;for(let$i:number=0,$j:number=this._content.length;$i<$j;$i++){$cell=this._content[$i];if($cell.value==value){return$cell.key;}}returnnull;}/***获取所有键S*@returns{Array<K>}*/publicgetKeys():Array<K>{if(this._content.length==0)returnnull;let$cell:IConten2MapHash<K,V>=null;let$keys:Array<K>=[];for(let$i:number=0,$j:number=this._content.length;$i<$j;$i++){$cell=this._content[$i];$keys.push($cell.key);}return$keys;}/***获取值*@param{K}key*@returns{V}*/publicgetValue(key:K):V{let$cell:IConten2MapHash<K,V>=null;for(let$i:number=0,$j:number=this._content.length;$i<$j;$i++){$cell=this._content[$i];if($cell.key==key){return$cell.value;}}returnnull;}/***获取所有值S*@returns{Array<V>}*/publicgetValues():Array<V>{if(this._content.length==0)returnnull;let$cell:IConten2MapHash<K,V>=null;let$values:Array<V>=[];for(let$i:number=0,$j:number=this._content.length;$i<$j;$i++){$cell=this._content[$i];$values.push($cell.value);}return$values;}/***添加、修改一个键值*如果没有则添加/如果有则修改*@param{K}$key键*@param{V}$value值*@returns{number}存储的长度*/publicaddChangeVal($key:K,$value:V):number{if($key==null){returnthis._content.length;}if(this.containsKey($key)){this.remove($key);}this._content.push({key:$key,value:$value});returnthis._content.length;}/***销毁*/publicdestroy():void{this.clear();this._content=null;}}/***HashMap键值数据对接口*@authorHusz*/exportinterfaceIConten2MapHash<K,V>{/**键*/key:K;/**值*/value:V;}}