dartdart-htmlpointerlock

PointerLock with dart


Is there a way to lock the cursor with dart that works on Firefox and Chrome? I tried:

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

in a mousedown-event listener

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

I also tried

renderer.canvas.requestPointerLock(); 

where renderer is a WebGLRenderer from the three.dart package. The problem is this works only in Chromium. I looked up the following crossbrowser-solution for js, but this doesn't work in dart.

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

Is there a way to do the pointer lock in dart, or do I need to find a way to execute the javascript above from dart?


Solution

  • There is an open issue for this https://dartbug.com/4463

    I think the problem in your code code using prefixes is that canvas.requestPointerLock, canvas.mozRequestPointerLock, canvas.webkitRequestPointerLock don't return false if they don't exist (or true if it does). You have to get the current browser by other means and then call the prefixed method.