2016-12-18 3 views
0

Есть ли способ идентифицировать событие щелчка правой кнопкой мыши ("contextmenu") & события прокрутки при включенном API блокировки указателя? Я пытаюсь создать трехмерную игру на основе браузера, в которой игрок сможет выполнять разные действия, щелкая левой кнопкой мыши, щелкая правой кнопкой мыши, посередине и прокруткой - пока указатель заблокирован.Определить события мыши во время requestPointerLock

index.html

<body><button id="lock">Start game</button</body> 

app.js

$("#lock").on("click", function(e) { 
    lockPointer(); // invokes the requestPointerLock API 
    e.stopPropagation(); 
}); 

// this works perfectly 
$("body").on("click", function(e) { 
    // do stuff on left click 
}); 

// this does not work 
$("body").on("contextmenu", function(e) { 
    // do stuff on right click 
}); 

ответ

1

Для правой кнопкой мыши вы можете использовать mousedown или mouseup событие, оно работает с requestPointerLock

$('body').on('mousedown', function(e) { 
    if (e.which === 1) { 
     // left button 
    } else if (e.which === 2) { 
     // middle button 
    } else if (e.which === 3) { 
     // right button 
    } 
}); 

Для прокрутки вы можете использовать wheel событие:

$('body').on('wheel', function(e) { 
    var dx = e.originalEvent.deltaX; 
    var dy = e.originalEvent.deltaY; 

    if (dy < 0) { 
     // scroll up 
    } else if (dy > 0) { 
     // scroll down 
    } 

    if (dx < 0) { 
     // scroll left (some mice support this) 
    } else if (dx > 0) { 
     // scroll right (some mice support this) 
    } 
}); 
+0

Это кажется достаточным мои требования. Большое спасибо! :-) – gdebojyoti

Смежные вопросы