spriteFrame中使用问题

使用sprite组件,设定了SpriteFrame为该图片,复制6个排列,结果当我设置右边的spriteFrame.setFlipX(true)的时候,左边也跟着翻转,同一个朝向。这就很奇怪了,此后无论创建多少个sprite组件,只要拖动这张图片进去,必然是垂直翻转的。查看这些spriteFrame的isFlipX()属性又没有错,依次是false,true,false,true,false,true
这时候我又挂在第二张图片,让我的spriteFrame挂载新的图片,就不会翻转

我的理解是,spriteFrame直接更改了本地资源图片,导致加载的时候图片全部都变成反的
如何解决这种问题?难道我要重新放多一张相同的图片但不同命名,这也太傻逼了吧!
新手研究了一晚上,总以为哪里写错了,结果是底层机制有问题,新手求解

是spriteFrame 是内存对象, 不是修改本地的资源。
如果你多个sprite 引用的是一个 spriteFrame , 那么这个 spriteFrame 修改,所有的sprite都会生效,
没有特殊要求最好别去改动spriteFrame, 想要翻转可以直接修改 sprite节点的 scaleX 为 -1 这样就水平翻转了

但是,所有的组件sprite在我创建的时候,不会给他一个新的内存的,这块内存中,会各自存放一个spriteFrame。另外还遇到一个问题,我给他添加点击事件,每次点击会触碰方法
letItFlipX:function(){var sprite = this.getComponent(cc.Sprite).spriteFrame;sprite.setFlipX(!sprite.isFlipX())},结果没有任何反应,这又是为什么,他应该给我一个水平翻转

你sprite.setFlipX 这样设置了后, 再把 this.getComponent(cc.Sprite).spriteFrame = sprite 设置回去试试
你直接这样修改,Sprite也不知道需要更新啊
也许这样也不会更新, 本来就是同一个对象
this.getComponent(cc.Sprite).setVertDirty(); 这样试试
但是这样并不是操作翻转的正确方式

我尝试了下this.node.scaleX = -1,的确可以翻转,但是会出现一个很神奇的问题
当我给按钮添加点击事件
this.node.scaleX = -1,每次都翻转,结果又开始乱了
而我尝试用this.node.scaleX = this.node.scaleX == -1 ? 1 : 1,
结果也是乱的,原本scaleX = -1的状态会被翻转一次,原本为scaleX = 1的状态则不受影响,后续再设置为1的时候都不会翻转了

官方文档写的真是烂,基本机制都说不清

this.node.scaleX = this.node.scaleX == -1 ? 1 : -1
这句写错了吧

我打错了,但是实际上你按你的那样写得,图片不会翻转

找到问题了,我的设置动画,点击的时候回放大,然后会耦合,真服气了