cocos creator Label 文本过多报错

cocos creator Label 文本过多报错

类似用户协议、隐私条款等带有法律的词条文本数量上千行

当时这么写的

let labelNode = new Node('labelNode')
let label = labelNode.addComponent(Label)
label.cacheMode = Label.CacheMode.CHAR
label.string = '....' //上千条字符

这样可以一下加载出来,可关闭这的协议,加载其他协议时,就会报 font size 太长错误

折腾好久,这的字符太长不能让它保留缓存,把 cacheMode 改成 none,可就算none 也不能加载这么多,干脆就分了几段写

let a1 = ""
let a2 = ""
let a3 = ""
this.addLabel('a1', 0, a1)
this.addLabel('a2', -2000, a2)
this.addLabel('a3', -4000, a3)
addLabel(name:string, y: number, text:string){
	let labelNode = new Node(name)
	labelNode.layer = Layers.BitMask.UI_2D
	labelNode.setPosition(0, y)
	let label = labelNode.addComponent(Label)
	label.cacheMode = Label.CacheMode.NONE
	label.string = text
	this.node.addChild(labelNode)
}

这样一下全部加载低性能手机可能会卡,得由 scroll 滚动事件触底,再加载下一段文本

scrollView 事件

@property(ScrollView)
scrollView: ScrollView = null!
// scroll-to-bottom 滚动差不多到底,有个回弹动画,回弹动画不触发此事件,有回弹后再滚动到底就会触发,或者直接滚到底
// bounce-bottom 触底就会有反应
this.scrollView.node.on('bounce-bottom', this.onScrollEvent,this)
onScrollEvent(scroll: ScrollView){

}
还是报错

多少 和 label 缓存设置有关

cacheMode 的 NODE 和 BITMAP 给定 宽度时不会自动换行,文本超出 节点

将 cacheMode 改成 CHAR 就会自动换行,如果文本太多改小字体

CHAR 模式会将每个文本生成位图,位图最大 2048 * 2048 超过就会出错,每个字体越小,生成总的位图容量就会越小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值