用的是cocos creator 2.0.0在编辑器用浏览器运行。
准备两张尺寸差别比较大的图片,比方说一张100900 一张 900100
我首先用sprite.spritFrame = spriteFrame1.clone()的方法给精灵赋值,
然后在0.5秒之后把精灵隐藏,sprite.acitve = false;
然后在0.5秒之后修改精灵,sprite.spritFrame = spriteFrame2.clone(),然后显示精灵,sprite.acitve = true;
会发现精灵显示的尺寸会被拉伸到spriteFrame1的大小。但是node的width跟height是spriteFrame2的尺寸。
如果我先显示精灵再修改精灵,也就是sprite.acitve = true;sprite.spritFrame = spriteFrame2.clone();
这个时候显示正常。请问这个问题要怎么解决,因为逻辑需要在隐藏精灵的时候修改精灵的信息。
测试工程:test.zip (53.3 KB)
测试的代码可以这样写
Test.js
cc.Class({
extends: cc.Component,
properties: {
sprite :{
default : null,
type : cc.Sprite
},
sf1 :{
default : null,
type : cc.SpriteFrame
},
sf2 :{
default : null,
type : cc.SpriteFrame
}
},
start () {
this.timer = 0;
this.sprite.spriteFrame = this.sf1.clone();
this.flag = false;
},
update (dt) {
if(this.timer < 1){
this.timer += dt;
if(this.timer > 0.5 && this.sprite.node.active && this.flag == false){
this.sprite.node.active = false;
this.flag = true;
}
if(this.timer > 1){
this.timer -= 1;
this.sprite.spriteFrame = this.sf2.clone();
this.sprite.node.active = true;
}
}
},
});