[LayaAir 2.0]使用Laya.loader.load加载Laya.Loader.FONT位图字体文件时就会出现无限循环加载,一直到浏览器奔溃

引擎版本:2.0.0
问题描述:
在1.7.*下预加载位图字体文件没问题,但升级到2.0.0后,使用Laya.loader.load加载Laya.Loader.FONT位图字体文件时就会出现无限循环加载,一直到浏览器奔溃,看了下文档描述,Laya.Loader.FONT位图字体类型,加载完成后返回BitmapFont,加载后,会根据文件名自动注册为位图字体,按理说loader是支持位图字体加载的,是我使用姿势不对吗,百思不得其解,麻烦官方大佬看下,谢谢。
 
还有 https://ask.layabox.com/question/41102  这个问题,麻烦官方大佬百忙之中抽时间看下,谢谢。
 
版本千万个,安全第一条,测试不谨慎,开发两行泪。
 
 
ps: 测试代码贴到测试地址里,点下执行代码就能100%复现,就不上传Demo了
 
测试地址:https://layaair.ldc.layabox.com/demo2/?language=ch&category=2d&group=Text&name=BitmapFont
测试代码:
let fontName = "diyFont";
 
class Text_BitmapFont {
constructor() {
const 
Browser = Laya.Browser,
WebGL = Laya.WebGL,
Stage = Laya.Stage,
Stat = Laya.Stat;
 
// 不支持WebGL时自动切换至Canvas
Laya.init(Browser.width, Browser.height, WebGL);
 
Laya.stage.alignV = Stage.ALIGN_MIDDLE;
Laya.stage.alignH = Stage.ALIGN_CENTER;
 
Laya.stage.scaleMode = Stage.SCALE_SHOWALL;
Laya.stage.bgColor = "#232628";
 
this.loadFont();
}
 
loadFont() {
const 
BitmapFont = Laya.BitmapFont,
Handler = Laya.Handler;
 
Laya.loader.load([{
    url: ['res/bitmapFont/test.fnt'],
    type: Laya.Loader.FONT
}], Handler.create(this, () => {
            console.log('bitmapFont loaded');
            
            this.onFontLoaded();
        }), Handler.create(this, (progress) => {
            console.log('bitmapFont loading', progress);
        }, null, false));
 
this.bitmapFont = new BitmapFont();
}
 
onFontLoaded() {
// 设置空格的宽
this.bitmapFont.setSpaceWidth(10);
// 注册位图字体
Laya.Text.registerBitmapFont(fontName, this.bitmapFont);
 
this.createText(fontName);
}
 
createText(font) {
let txt = new Laya.Text();
Laya.stage.addChild(txt);
txt.width = 250;
txt.wordWrap = true;
txt.text = "Do one thing at a time, and do well.";
txt.font = font; // 文本的字体名称,以字符串形式表示
txt.leading = 5; // 垂直行间距
txt.pos(Laya.stage.width - txt.width >> 1, Laya.stage.height - txt.height >> 1);
}
}
 
new Text_BitmapFont();
 
结果截图:
已邀请:

Aar0n

赞同来自:

Laya.loader.load([{url: path, type: Loader.XML}, {url: path.replace(".fnt", ".png"), type: Loader.IMAGE}], Handler.create(this, _onLoaded));

J

赞同来自:

我也遇到这问题,无限加载,加载进度一直是0.5,我看了AS的源码,应该是源码有问题,源码如下:

QQ图片20200525151909.png

结合问题,应该 data._source 没有赋值,所以一直抛出进度0.5,一直卡在加载png
解决方法,利用 BitmapFont.loadFont 加载
或者用 Laya.loader 加载 fnt(XML加载类型) 和 png,不过这个有点繁琐,加载完成还需要解析和注册

要回复问题请先

商务合作
商务合作