PhyTouch
PhyTouch copied to clipboard
transform.JS rotate旋转问题
我每一次执行dom.rotateZ += 45; 当dom.rotateZ = 180,540,900...的时候绑定的这个元素 会反向旋转225度; 这与我需要的效果不符,要怎样 才会跟原始的一样?
会 %360 啊。所以处理一下~~
没明白你意思 是 if(this.img.rotateZ % 360){ this.img.rotateZ += 45 } 能具体写写吗?
仔细试了一把。感觉是 transition+matrix3d的坑,看下要不要chrome团队提issue~~
@dntzhang 你好!我也遇到了一样的问题,观察了一下生成的矩阵,发现出现2e-15
、3e-15
之类的值时,会逆向旋转。
有点不太理解这段代码,不知道是不是有问题:
_rounded: function (value, i) {
i = Math.pow(10, i || 15);
// default
return Math.round(value * i) / i;
},
我改成这样子以后,2e-15
之类的值返回0
,rotateZ就没问题了,但是rotataY还是有问题
_rounded: function (value) {
return Math.abs(value) < 1e-14 ? 0 : value
},
收到,多谢。我看下 ~ @imyzf
另外我发现如果%360
就不会有2e-15
出现
rotateZ = 1890
[0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]
rotateZ = 1980
[-1, -2e-15, 0, 0, 2e-15, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]
结合transition
,从1890度到1980度会逆向旋转
怎么样,最后这个问题有解决吗 , 还是无解?
没有解决。规避的方式是操作rotate属性的时候不要和css transition 一起使用~~,和 js 定时器或者requestAnimationFrame 一起使用是ok的。要去翻 webkit 源码了~~
同样遇到这个问题
不要和transition一起使用