PhyTouch icon indicating copy to clipboard operation
PhyTouch copied to clipboard

transform.JS rotate旋转问题

Open liuzhibin123 opened this issue 7 years ago • 10 comments

我每一次执行dom.rotateZ += 45; 当dom.rotateZ = 180,540,900...的时候绑定的这个元素 会反向旋转225度; 这与我需要的效果不符,要怎样 才会跟原始的一样?

liuzhibin123 avatar Apr 28 '17 07:04 liuzhibin123

会 %360 啊。所以处理一下~~

dntzhang avatar Apr 28 '17 10:04 dntzhang

没明白你意思 是 if(this.img.rotateZ % 360){ this.img.rotateZ += 45 } 能具体写写吗?

liuzhibin123 avatar May 02 '17 02:05 liuzhibin123

仔细试了一把。感觉是 transition+matrix3d的坑,看下要不要chrome团队提issue~~

dntzhang avatar May 04 '17 01:05 dntzhang

@dntzhang 你好!我也遇到了一样的问题,观察了一下生成的矩阵,发现出现2e-153e-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 avatar May 08 '17 03:05 imyzf

收到,多谢。我看下 ~ @imyzf

dntzhang avatar May 08 '17 04:05 dntzhang

另外我发现如果%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度会逆向旋转

imyzf avatar May 08 '17 04:05 imyzf

怎么样,最后这个问题有解决吗 , 还是无解?

liuzhibin123 avatar Jul 06 '17 07:07 liuzhibin123

没有解决。规避的方式是操作rotate属性的时候不要和css transition 一起使用~~,和 js 定时器或者requestAnimationFrame 一起使用是ok的。要去翻 webkit 源码了~~

dntzhang avatar Jul 06 '17 11:07 dntzhang

同样遇到这个问题

xluos avatar May 24 '18 08:05 xluos

不要和transition一起使用

dntzhang avatar May 25 '18 00:05 dntzhang