[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();
 
结果截图:
1.png

 
已邀请:

dasonjack

赞同来自:

该问题,我也提过,参考https://ask.layabox.com/question/41817

要回复问题请先

商务合作
商务合作