我正在尝试做所谓的微调事情。基本上看起来像:http://jsfiddle.net/r9KQK/1/

稍后,我将有一些音频播放器,当我们在平板电脑上使用该设备时,它将有助于选择秒数。

问题是,当您尝试移动红色圆圈时,当它经过绿色圆圈的顶部和底部时会奇怪地掉落,但不会到达0或PI / 2,例如-260 ..- 269和181..190度

只需尝试移动它,您就会看到错误。

我的代码有什么问题?

提前致谢

更新

最近更新:http://jsfiddle.net/r9KQK/17/

在此示例中,我获得的度数在0..360范围内。但是相反,我应该在开始拖动和结束拖动之间获得增量度,但是我无法计算数学。我还应考虑红色圆圈的方向,以使增量为+或-= \

更新

最后:http://jsfiddle.net/r9KQK/18/

但是代码确实很糟糕。虽然是凌晨2:46,我有点困,所以...
但无论如何,我认为它可能会更加简化

最佳答案

发生这种情况是因为当DeltaX为零时,您对Math.atan的参数变为无穷大。我建议使用atan2,它可以自动处理这种极端情况:

function(dx, dy, x, y)
{
    var deltaY = this.oy + dy - fineTuning.ring.attr('cy');
    var deltaX = this.ox + dx - fineTuning.ring.attr('cx');
    var angle = Math.atan2( deltaY, deltaX );

    // etcetera, etcetera


或检查fiddle

关于javascript - 在raphaeljs中画一个轮子,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11128583/

10-16 23:23