creator 的版本为1.9.2
当我修改 label 的 string 内容的时候,会调用到 CCSGLabel的 _updateQuads 函数.
在这个函数中 会调用到 _spriteBatchNode.removeAllChildren(); 将以前生成的整个内容全部清空 .并在removeAllChildren 函数中调用了 cc.renderer.childrenOrderDirty 将整个renderer设为脏.
同时在 _updateQuads 函数中会调用到new _ccsg.Sprite();(var fontChar = this.getChildByTag(ctr) 得到的缓存似乎没有起到作用一直是空). 导致在这个过程中出现了 比较可观的内存分配.
以上两个操作会导致 设置lable 的string 内容会变成非常昂贵的开销.
这直接导致了 在微信小游戏上性能的崩溃.
不知道 后面的 版本 对于这个问题的性能是否进行了优化.
我也发现了这个问题,用Chrome DevTools一点点扒出来的。。之前我用的是系统字体,后来换了艺术字不知道效果会不会好点,还没测试…楼主有解决方案还请分享出来哦~
@panda @jare @leda @BigBear
应该是兼顾到了其他地方,遗漏了这里基本的性能问题,希望解决啊~我大量的label
1赞
我目前测下来就是艺术字 也会
后面2.x的版本直接砍掉了sgnode,这一块,自然不会还有这一块的开销了
考虑在1.9 的版本中 做部分优化嘛
var fontChar = this.getChildByTag(ctr) 这句得到的一直是空 应该是你们哪个版本改出来的问题吧
2.x 的版本 目前看下来 问题好多啊 不敢升级
最后采用了什么方式设置label呢?