よろしければこちらのページをご覧ください
パネル上の大きなボタンの 1 つをクリックして、マウスを y 軸上で動かしてみてください。ボタンが回転し始めます。さて、マウスを離してもう一度クリックしてください。
ボタンの回転に関連するコード スニペットを次に示します。描画ループで実行されるコードは 30ms ごとに呼び出されることに注意してください。
// 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
class の変数に格納されますButton
。マウスをドラッグしている間、マウスの位置は保存されている値と常に比較されます。クリックしたポイントから現在のマウスの位置までの距離によって、ボタンの回転量が決まります。問題は、もう一度クリックすると回転がゼロに戻ることです。の解き方?!
メソッドを変更して失敗した試みの1つを次に示します
// method
Button.prototype.Rotate = function(yDrag){
this.rotation += - (yDrag - this.rotationYClick) / 80
}
どうもありがとう!