webGL+JS鼠標事件

1.在onload()函數中

        //按下鬆開按鈕
        //document
        canvas.onmousedown = handleMouseDown;
        canvas.onmouseup  = handleMouseUp;
        canvas.onmousemove  = handleMouseMove;
        canvas.onmouseout = handleMouseOut;

2.down up out

var mouseDown = false;
    var lastMouseX = null;
    var lastMouseY = null;
    var boxRotationMatrix = mat4.create();
    mat4.identity(boxRotationMatrix);
    function handleMouseDown(event) {
        mouseDown = true;
        lastMouseX = event.clientX;
        lastMouseY = event.clientY;
    }
    function handleMouseUp() {
        mouseDown = false;
    }
    function handleMouseOut() {
        mouseDown = false;
    }

3.move

function handleMouseMove(event) {
        if(!mouseDown){
            return;
        }
        var newX = event.clientX;
        var newY = event.clientY;
        var deltaX = newX - lastMouseX;
        var newRotationMatrix = mat4.create();
        mat4.identity(newRotationMatrix);
        mat4.rotate(newRotationMatrix, degToRad(deltaX / 10), [0, 1, 0]);

        var deltaY = newY - lastMouseY;
        mat4.rotate(newRotationMatrix, degToRad(deltaY / 10), [1, 0, 0]);

        mat4.multiply(newRotationMatrix, boxRotationMatrix, boxRotationMatrix);

        lastMouseX = newX;
        lastMouseY = newY;

    }

4.drawscene中寫入

 mat4.multiply(mvMatrix,boxRotationMatrix);
發佈了47 篇原創文章 · 獲贊 24 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章