Demo:
spriteFrame_clone_bug.zip (837.1 KB)
const { ccclass, property } = cc._decorator;
@ccclass
export default class Helloworld extends cc.Component {
@property(cc.SpriteFrame) frame: cc.SpriteFrame = null;
onClone() {
console.log(this.frame.getRect());
let node = new cc.Node();
let sprite = node.addComponent(cc.Sprite);
sprite.spriteFrame = this.frame.clone();
cc.find('Canvas').addChild(node);
}
}
每次 clone 并赋值给新节点的 spriteFrame 后,原 frame 的 rect 就会发生改变,再次点击,会在改变的基础上再次改变。克隆出来的精灵纹理会显示异常。
