如题。
假如scaleX:-1,则有两层含义,一是水平方向缩放至1倍,二是左右翻转一次。若不设置y方向,那么该节点缩放实际是xy方向都是1倍,但此时若通过node.scale来获取缩放,则会报错,问你返回哪一个,因为xy方向缩放系数不一致。
一个属性一个含义会不会更好?
如题。
假如scaleX:-1,则有两层含义,一是水平方向缩放至1倍,二是左右翻转一次。若不设置y方向,那么该节点缩放实际是xy方向都是1倍,但此时若通过node.scale来获取缩放,则会报错,问你返回哪一个,因为xy方向缩放系数不一致。
一个属性一个含义会不会更好?
不设置scaleY的话。scaleY应该还是1啊。。。
设置了 scaleX=-1 x轴缩放比例就是 -1 了,怎么能够理解成缩放比例是1,顺带翻转了呢= =。。。
只是scaleX=-1的时候x轴恰好翻转了。
这么说吧,让你设置一个缩放系数为负数,怎么理解?缩放可以为负数么?
正常的几何上的二维确实是没有负数的缩放。可是我们是一群不正常的人,哈哈哈
可以理解成flip和scale结合。
符号代表flip,数字代表scale,这样估计更好理解~~
你要的效果改一下代码就可以了~
let scaleVale = 2; //缩放到2倍大小
this.testNode.runAction(cc.scaleTo(1, scaleVale, -scaleVale));
这倒是解决了这个需求问题,不过通过node.scale获取缩放报错,这个怎么解释?个人感觉还是做个正常人好点。吼吼吼。。。
因为一个是 scaleX=-1 而 scaleY=1,也就是说一个是说 X 轴是 flip + scale.1 而 Y 轴只是 scale.1。两个数值确实不是相等的,所以scale不知道该返回那个唉。返回1的话,flip数据就丢了,返回-1的话,明明Y轴没有去翻转。
综上所述,为什么要吝啬一个属性,而要用一个属性来搞定两件事呢?
要么就干掉node.scale…不过相信很多开发之前都搞过cocos2dx,所以自然而然通过getScale,getScaleX,getScaleY联想到scale,scaleX,scaleY。
如果scaleX与scaleY不一致,就不要用getScale呗。就算添加了翻转属性,scaleX与scaleY不能为负,但是当它们俩不一样时,getScale照样报错。你可以自己写一个忽略负值的判断方法
myGetScale: function(){
if (Math.abs(Math.abs(this.node.scaleX)-Math.abs(this.node.scaleY))<10e-6) {
return Math.abs(this.node.scaleX);
} else {
cc.warn('scaleX与scaleY不一致!');
}
},
mySetScale: function(scale){
scale = Math.abs(scale);
this.node.scaleX = this.node.scaleX < 0 ? -scale : scale;
this.node.scaleY = this.node.scaleY < 0 ? -scale : scale;
},
myFlipX: function(){
this.node.scaleX = -this.node.scaleX;
},
myFlipY: function(){
this.node.scaleY = -this.node.scaleY;
}
你赢了。。。。