请看看这个页面
尝试单击面板上的一个大按钮并在 y 轴上移动鼠标。按钮开始按应有的方式旋转。现在,离开你的鼠标并再次点击它们:他们为什么坚持要回到原来的位置?!
这是与按钮旋转相关的代码片段。请注意,在绘图循环中执行的代码每 30 毫秒调用一次。
// method
Button.prototype.Rotate = function(yDrag){
this.rotation = - (yDrag - this.rotationYClick) / 80
}
// draw loop
function drawLoop() {
if (buttons[n].roating == true && mousePressed == true)
buttons[n].Rotate(mousePosition_y)
else
buttons[n].roating = false
} // end draw loop
// fired ONLY ONCE when mouse is clicked
function mouseDown() {
buttons[n].roating = true
buttons[n].rotationYClick = mousePosition_y
}
我故意避免发布大部分代码,因为我确信问题在于这些行。
代码说明:当你点击一个按钮时,鼠标的位置存储在rotationYClick
类的变量中Button
。当您拖动鼠标时,鼠标位置会不断与存储的值进行比较:当前鼠标位置与您单击的点的距离将决定按钮旋转多少。问题是,当您再次单击它时,旋转设置回零。怎么解决?!
这是我通过更改方法失败的尝试之一
// method
Button.prototype.Rotate = function(yDrag){
this.rotation += - (yDrag - this.rotationYClick) / 80
}
非常感谢!