-
Creator 版本:2.1.0
-
目标平台: Android 微信小游戏 Android 7.0
-
详细报错信息,包含调用堆栈:for循环创建 50个label组件( 回收池形式 ) 掉帧到 20
-
重现方式:必现
-
之前哪个版本是正常的 :
-
手机型号 :三星S6
-
编辑器操作系统 :window 7
-
编辑器之前是否有其它报错 :没有
-
出现概率:100%
// 回收池创建
createPool( key, prefab, node, spriteName , args) {
let element = null;
if ( !this.elementList[ key ] ) {
this.elementList[ key ] = {};
this.elementList[ key ].pool = new cc.NodePool(key);
this.elementList[ key ].prefab = prefab;
element = this.getElement( key, node, spriteName ,args);
} else {
element = this.getElement( key, node, spriteName ,args);
}
return element;
}
getElement( key, node, scriptName ,args) {
let element = null;
let elementData = this.elementList[ key ];
if ( elementData ) {
if ( elementData.pool.size() > 0 ) {
element = elementData.pool.get();
} else {
// 如果对象池总没有.就创建
element = cc.instantiate( elementData.prefab );
console.log( new Date() + '创建' , elementData.pool.size() );
}
element.parent = node;
if ( scriptName ) {
element.getComponent( scriptName ).initPool(args);
}
}
return element;
}
onElementKilled( key, element ) {
if ( this.elementList[ key ] ) {
this.elementList[ key ].pool.put( element );
}
}
// 测试代码
createDamageLabel( attCount, isDouble ) {
let label = NodePoolMgr().createPool( 'DamageItem', this.damage, this.bossPos, 'DamageItem', {
isDouble,
attCount,
pos: { y: this.curBoss.height / 2 }
} );
},
// 按钮事件
onCreate() {
// 循环50个
for ( let i = 0; i < 50; i++ ) {
this.createDamageLabel( 105, i % 3 === 0 );
}
}
###就这样一个流程. 字体是加载的字体包.只有800KB …显示只显示 数字 和 “暴击”; 显示格式 “-100"或者"暴击:-200”;
###操作流程:
####点击按钮 帧数从60掉到 20左右,