Выход указатель блокировки управления Three.js не работает

У меня есть следующий код для блокировки курсора (это прекрасно работает):

var element = document.body;

var controls;
var instructions = document.getElementById( 'start' );
var havePointerLock = 'pointerLockElement' in document || 'mozPointerLockElement' in document || 'webkitPointerLockElement' in document;

if ( havePointerLock ) {


    var pointerlockchange = function ( event ) {

        if ( document.pointerLockElement === element || document.mozPointerLockElement === element || document.webkitPointerLockElement === element ) {

            controlsEnabled = true;
            controls.enabled = true;

        } else {

            controlsEnabled = false;
            controls.enabled = false;

            instructions.style.display = '';

        }

    };

    var pointerlockerror = function ( event ) {

        instructions.style.display = '';

    };

    // Hook pointer lock state change events
    document.addEventListener( 'pointerlockchange', pointerlockchange, false );
    document.addEventListener( 'mozpointerlockchange', pointerlockchange, false );
    document.addEventListener( 'webkitpointerlockchange', pointerlockchange, false );

    document.addEventListener( 'pointerlockerror', pointerlockerror, false );
    document.addEventListener( 'mozpointerlockerror', pointerlockerror, false );
    document.addEventListener( 'webkitpointerlockerror', pointerlockerror, false );

    instructions.addEventListener( 'click', function ( event ) {

        instructions.style.display = 'none';

        // Ask the browser to lock the pointer
        element.requestPointerLock = element.requestPointerLock || element.mozRequestPointerLock || element.webkitRequestPointerLock;

        if ( /Firefox/i.test( navigator.userAgent ) ) {

            document.addEventListener( 'fullscreenchange', fullscreenchange, false );
            document.addEventListener( 'mozfullscreenchange', fullscreenchange, false );

            element.requestFullscreen = element.requestFullscreen || element.mozRequestFullscreen || element.mozRequestFullScreen || element.webkitRequestFullscreen;

            element.requestFullscreen();

        } else {

            element.requestPointerLock();

        }

    }, false );

} else {

    instructions.innerHTML = 'Your browser doesn\'t seem to support my epic Portfolio';

}

когда я запускаю функцию, я хочу, чтобы управление указателем было отключено, чтобы я мог снова использовать свою мышь. поэтому я попробовал следующее:

function onDocumentMouseDown( event ) {

    element.exitPointerLock;

}

это не дает мне никаких ошибок, но я также не могу вернуть свою мышь, почему это?

когда я пытаюсь:

element.exitPointerLock();

я получаю element.exitPointerLock не является функцией

поэтому я не знаю, как это исправить:(любые предложения будут хороши, если вам нужно больше кода или jsfiddle просто спросите меня:)

1 ответ

Решение

Так что я понял это:D я должен был изменить:

element.exitPointerLock();

чтобы:

document.exitPointerLock();

тогда все работает нормально! надеюсь, это поможет кому-то:)

Другие вопросы по тегам