原生平台SpriteFrame重复设置bug

遇到一个奇怪的bug,希望引擎组能看一下

  1. 使用cc.loader.loadRes加载一张图片后将回调中spriteFrame设置到Sprite 并保存,这时候图片显示是正常的。
  2. 先将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);
}

试了下最新的v2.0 Beta 没这个问题,1.9.2、1.9.3都会出现
反正也没人关注算了。

官方比較喜歡你問怎樣創建一個文本節點。
引擎層的問題嘛。。有沒回覆天知道。

顶一下 这个bug在原生上按以上步骤比现 @panda