罗盘旋转 javascript 角度问题 - 旋转/平移

发布于 2024-08-22 19:51:22 字数 382 浏览 8 评论 0原文

我正在为 iphone 构建一个指南针,呃,只是为了实验目的并学习如何使用 javascript 和phonegap 来实现它。

现在我已经能够获得度数,我能够使用 webkit-transform translateZ (或者我可以使用旋转)将 deg 0-360 应用于 div (我们称之为“轮子”),

但我有一个bug:

当轮子从 0 度到 359 度时,一切正常,但是当度数再次达到 0 度时,它不再沿该方向(顺时针)平滑旋转,而是再次逆时针快速旋转到 0 度位置...

我不知道我知道我很清楚,因为没有例子就不容易解释......'

基本上我的问题是找到正确的脚本来移动轮子,从我可以从iPhone轻松获得的值0-360开始。

欢迎任何建议。

i'm building a compass for the iphone, duh, just for experiment purpose and to learn how to do it, in javascript, with phonegap.

now i'm already able to get the degrees, i was able to apply the deg 0-360 to a div (let's call it the "wheel") using the webkit-transform translateZ (or i could use rotate)

but i have a bug:

when the wheel goes from 0deg to 359deg everything is ok, but when the degree goes to 0deg again, instead of smoothly spin in that direction (clockwise), it spin rapidly again anti-clockwise to the positin 0deg...

i dont know i'm clear because is not easy to explain without an example....'

basically my problem is to find the right script to move the wheel starting with the value 0-360 that i can get easily from the iphone.

any suggestions are welcome.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

固执像三岁 2024-08-29 19:51:23

当大于 360 时翻转。以下是示例:http://gutfullofbeer.net/rotate.html

[编辑] 我已经更新了代码来处理逆时针旋转。这是我的基于 jQuery 的 Javascript 的样子:

  $(function() {
    var rotator = function(class, inc) {
      var degrees = 0;
      return function() {
        $('.' + class)
          .css({'-webkit-transform': 'rotate(' + degrees + 'deg)'})
          .css({'-moz-transform': 'rotate(' + degrees + 'deg)'})
          ;
        degrees += inc;
        if (degrees > 360) degrees -= 360;
        if (degrees < 0) degrees += 360;
      };
    };
    setInterval(rotator('clockwise', 2), 33);
    setInterval(rotator('counter-clockwise', -2), 33);
  });

Roll over when you get bigger than 360. Here's a sample: http://gutfullofbeer.net/rotate.html

[edit] I've updated the code to deal with counter-clockwise rotation. Here's what my jQuery-based Javascript looks like:

  $(function() {
    var rotator = function(class, inc) {
      var degrees = 0;
      return function() {
        $('.' + class)
          .css({'-webkit-transform': 'rotate(' + degrees + 'deg)'})
          .css({'-moz-transform': 'rotate(' + degrees + 'deg)'})
          ;
        degrees += inc;
        if (degrees > 360) degrees -= 360;
        if (degrees < 0) degrees += 360;
      };
    };
    setInterval(rotator('clockwise', 2), 33);
    setInterval(rotator('counter-clockwise', -2), 33);
  });
梦幻的味道 2024-08-29 19:51:23

我没有看到任何发表评论的按钮...抱歉,但我必须在这里写...
这是我的代码

deg 是 iphone 给我的值,它可以是 0 到 360。

document.getElementById('mycompass').style.webkitTransform = "rotateZ ("+-deg+"deg)";

当 'mycompass' 转到 359 然后是 0 时,它会一直旋转回去...

在您的示例中,我可以拥有大于 360 的值,所以它对我不起作用...

我的在哪里错误?

i dont see any button to make comments...sorry but i have to write here...
this is my code

deg is the value that the iphone give to me ant it can 0 to 360.

document.getElementById('mycompass').style.webkitTransform = "rotateZ("+-deg+"deg)";

when 'mycompass' goes to 359 and then 0, it rotates all way back...

in you example i can have values bigger than 360 so it doesn't work for me...

where is my error?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文