旋转鼠标拖动

时间:2019-11-08 08:05:44

标签: javascript processing p5.js

您好,我想在mouseDraggedmousePressed上旋转网格。我的代码正在工作,但是当我停止按下鼠标时,旋转将转到起点,而不是重新绘制网格。请指导我完成拖动或鼠标按下到终点后如何重画网格?

1 个答案:

答案 0 :(得分:0)

之所以引起这个问题,是因为变量angle声明为局部变量,并在每个帧中都由0初始化。

将变量声明移至全局范围。例如:

let angle = 0;

function draw() {

    // [...]

    if (mouseIsPressed) {
        angle =  atan2(mouseY - height / 2, mouseX - width / 2);
    }

    // [...]
}

根据评论进行扩展。

  

我如何开始再次从其结束位置拖动

使用enter image description here事件回调来管理角度。 添加一个永久角度和一个当前角度:

let permanent_angle = 0;

function  mouseReleased() {
    let angle =  atan2(mouseY - height / 2, mouseX - width / 2);
    permanent_angle += angle;
}

function draw() {

    // [...]

    let current_angle = 0;
    if (mouseIsPressed) {
        current_angle =  atan2(mouseY - height / 2, mouseX - width / 2);
    }

     translate(width / 2, height / 2);
     rotate(permanent_angle + current_angle);
     translate( -width / 2 + 20, -height / 2 +20 );

     // [...]
}