Creator 版本号: 1.4.0
重现场景:
- 创建一个有2000个字的fnt文件。
- 在一个界面上放20个Label,字体全部设为这个fnt文件。
- 运行程序,打开这个界面,在I7的PC机上一共花了5秒钟才打开。
原因分析:
- CCSGLabel.js : _setBMFontFile(fntDataStr, spriteFrame) ,这个fntDataStr竟然是一个fnt文本。
- 调用self._config = FntLoader.parseFnt(fntDataStr); 解析成数据结构,后面用这个结构生成文字。
也就是说每创建一个fnt的Label,就会解析一遍fnt文件,创建20个Label就解析20次。然后我这个2000个字的fnt文件有468K大小。这个效率已经可想而知有多慢了。
我把原因已经列在上面了,麻烦官方尽快修掉这个BUG,一个最简单的方案是缓存住fnt的结构,共用给所有Label。
这个问题没解决,fnt没办法派上用场了。


