最近升级了引擎到2.4.10
然后发现切换头像没有显示头像.代码如下
let Test = cc.Class({
extends: cc.Component,
properties : {
m_Head : {
type : cc.Node,
default : null,
}
},
OnBtnClick1(){
this.OnSelectHead( "head1" );
},
OnBtnClick2(){
this.OnSelectHead( "head2" );
},
OnSelectHead( url ){
let bundle = cc.assetManager.getBundle( "bundle" );
if (bundle) {
this.m_Head.removeComponent(cc.Sprite);
let sprite = this.m_Head.addComponent(cc.Sprite);
bundle.load(
url,
cc.SpriteFrame,
this.onLoadSpr.bind(this, sprite)
);
}
},
onLoadSpr( sprite, err, spriteFrame ){
if( err != null ) return;
sprite.spriteFrame = spriteFrame;
},
});
我把其中代码段
this.m_Head.removeComponent(cc.Sprite);
let sprite = this.m_Head.addComponent(cc.Sprite);
修改为
let sprite = this.m_Head.getComponent(cc.Sprite);
if (sprite == null) {
sprite = this.m_Head.addComponent(cc.Sprite);
}
就正常.
原来版本2.4.6没有这个问题,升级引擎后出现的.
大家就不要吐槽不断addComponent removeComponent了,新人写的代码,没做代码审核.
我想问的是,为什么不断addComponent removeComponent会有这个问题.