laya设置数字的两种方法

1、laya自带组件Font_Clip,直接调用接口

fontClip.value = String(value);即可

2、美术给的资源为单张的数字资源,或者包含小数点点特殊符号时,这时候方法一用起来不再方便,当然,这里可以用最原始的方法,添加多张img,然后根据实际数据设置skin,并调整img的位置实现居中,这么做也不是不可以,但是一张两张图可以这么做,如果需要一次显示10张,100张(虽然不太可能)呢?会多出来很多不必要的代码,不仅难维护,而且影响代码美观。其实,这里可以采用更智能的方法,需要多少张就new多少张,最后根据图片总的width设置每张图片的位置

代码如下

private function getImg():Sprite{
    var img:Sprite = new Sprite();
    img.textture = Loader.getRes(url);
    return img;
}
private function showNum(number:int):void{
    //两张图片数字之间的距离
    var space:int = -2;
    //path为资源根路径,这里写成img/
    var path:String = "img/";
    var images:Array = [];
    var w:int = 0;
    var h:int = 0;
    var url:String = "";
    var arr:Array = num.toString().split("");
    for(var i:int = 0;i<arr.length;i++){
        url = path + "num_"+parseInt(arr[i])+".png";
        if(!img||!img.texture){
            continue;
        }
        w+=img.texture.sourceWidth + space;
        h = Math.max(h,img.texture.sourceHeight);
        images.push(img);
    }
    w-=space;
    //以父容器左上角为基准
    var px:int = -w/2 + container.width/2;
    var py:int = -h/2 + container.height/2;
    for(I = 0,len = images.length;i<len;i++){
        img = images[i];
        if(!img||!img.texture){
            continue;
        }
        img.x = px;
        img.y = py + (h - img.texture.sourceHeight)/2;
        px+=img.texture.sourceHeight+space;
        //container为父容器
        container.addChild(img);
    }
}

可以根据需要调整space的值,控制数字的密集程度

############################2019-3-12修改###################################

这里存在一个问题,界面资源被清除掉之后,Loader.getRes()方法返回Undefined,导致界面显示不出图片数字资源。

解决方法有两个

一、从整个代码框架选择把调用图片资源的方法放在加载完图集之后再调用

二、如果不知道代码框架在哪里完成的图集加载,可以手动加载,再派发事件

1、定义一个全局变量,存储需要调用的数字;

2、调用图片资源时,先判断loader.getRes()能否返回图片资源,若能,则直接调用,这个和之前一样;若不能,则手动加载图集资源,加载完毕之后,派发加载完毕事件;

Laya.loader.load(url:*,complete:Handler = null);

url推荐json图集,而不是单张图片资源,因为这个图集资源是整个界面要用的,而且设为单张时,万一第二张图和第一涨不一样又得再手动加载一次,complete派发事件event(Event.LOADED)

3、定义一个方法,监听加载完毕事件,监听到加载完毕事件之后,再调用图片资源

主要代码如下

var arr:Array = number.toString().split("");
var url = path+parseInt(arr[0])+".png";
if(Loader.getRes(url)){
    showNumber(number);
}else{
    Laya.loader.load(["某图集地址"],Handler.create(this, function ():void{
        event(Event.LOADED);
    }));
}
发布了61 篇原创文章 · 获赞 2 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_22794043/article/details/88390519