我正在尝试做所谓的微调事情。基本上看起来像: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/