遇到一个奇怪的bug,希望引擎组能看一下
- 使用cc.loader.loadRes加载一张图片后将回调中spriteFrame设置到Sprite 并保存,这时候图片显示是正常的。
- 先将Sprite节点的spriteFrame置空,然后把保存下来的spriteFrame设置到Sprite,这时Sprite节点的大小会变成spriteFrame的纹理矩形区域大小(就是去掉透明像素的大小)。
使用图片周围需要带透明像素才能复现bug。
Sprite组件设置:
按理说第二次设置spriteFrame时节点应该也是修剪前的原始大小,但却变成了纹理矩形区域大小。
Size Mode:CUSTOM模式下也会出现这个bug。
只有置空会复现设置另一个spriteFrame再设置回来没问题。
cc自带的模拟器就可以复现,web端没有这个问题每次设置都是图片修剪前的原始大小。
版本是1.9.3
测试代码可以这样写:
cc.loader.loadRes(url, cc.SpriteFrame, (err, spriteFrame) => {
this.node.getComponent( cc.Sprite ).spriteFrame = spriteFrame;
this.node.getComponent( cc.Sprite ).spriteFrame = null;
this.node.getComponent( cc.Sprite ).spriteFrame = spriteFrame;
});
我现在的解决方法是每次新建spriteFrame不知道有没有更好的办法:
cc.loader.loadRes(url, cc.Texture2D, (err, texture2D) => {
let spriteFrame = new cc.SpriteFrame(texture2D);
}