PointerLock с дротиком

Есть ли способ заблокировать курсор с помощью дротика, который работает в Firefox и Chrome? Я старался:

void lock(event)
{    
    var canvas = document.querySelector('canvas');
    canvas.requestPointerLock();
}

в прослушивателе событий mousedown

 document.addEventListener('mousedown', lock, false);

я тоже пробовал

renderer.canvas.requestPointerLock(); 

где renderer — это WebGLRenderer из пакета three.dart. Проблема в том, что это работает только в Chromium. Я просмотрел следующее кроссбраузерное решение для js, но оно не работает в dart.

canvas.requestPointerLock = canvas.requestPointerLock ||
                 canvas.mozRequestPointerLock ||
                 canvas.webkitRequestPointerLock;

Есть ли способ сделать блокировку указателя в дротике или мне нужно найти способ выполнить приведенный выше javascript из дротика?


person pasiS    schedule 26.09.2014    source источник


Ответы (1)


Для этого https://dartbug.com/4463 существует нерешенная проблема.

Я думаю, что проблема в вашем коде с использованием префиксов заключается в том, что canvas.requestPointerLock, canvas.mozRequestPointerLock, canvas.webkitRequestPointerLock не возвращают false, если они не существуют (или true, если они существуют). Вы должны получить текущий браузер другими способами, а затем вызвать метод с префиксом.

person Günter Zöchbauer    schedule 26.09.2014
comment
Спасибо! Также у меня была проблема, потому что dart не распознавал атрибуты mozRequestPointerLock и webkitRequestPointerLock. Поэтому я добавил javascript, который блокирует указатель. - person pasiS; 26.09.2014