Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ProcessingJS是否可以同时有多个键输入?_Javascript_Html_Canvas_Html5 Canvas_Processing - Fatal编程技术网

Javascript ProcessingJS是否可以同时有多个键输入?

Javascript ProcessingJS是否可以同时有多个键输入?,javascript,html,canvas,html5-canvas,processing,Javascript,Html,Canvas,Html5 Canvas,Processing,我正在processingJS中开发一个RTS风格的Web应用程序,这意味着有一个小地图代表一个更大的地图,用户在任何给定时刻只能看到其中的一小部分。我刚刚添加了使用箭头键导航地图的功能,即: void keyPressed(){ if(key == CODED){ switch(keyCode){ case(UP): //go up case(DOWN): //go down , etc 但是,我希望能够通过按下

我正在processingJS中开发一个RTS风格的Web应用程序,这意味着有一个小地图代表一个更大的地图,用户在任何给定时刻只能看到其中的一小部分。我刚刚添加了使用箭头键导航地图的功能,即:

    void keyPressed(){
    if(key == CODED){
        switch(keyCode){
            case(UP): //go up
            case(DOWN): //go down , etc
但是,我希望能够通过按下两个箭头键的组合,让用户沿对角线移动。现在,这似乎是不可能做到的,因为“keyCode”似乎一次只能保存一个值

有人知道这个问题的解决方法吗


最好的,
萨米

我还没有测试过这个-但是你试过了吗:

 void keyPressed(){
      if(key == 'a' && key == 'b'){
           println("this just happened");
      }
 }

如果这样做有效,您可以找到箭头键的ascii值,而不是使用键编码。

正如@Xenethyl在评论中的链接中指出的那样,解决这个问题的一种方法是跟踪按键的时间,然后观察按键的释放时间。可以安全地假设在这两个事件之间的一段时间内按下了一个键。

我将在javascript中执行以下操作:

    document.onkeydown = keydown; 

    function keydown(evt) { 

    if (!evt) evt = event; 

    if (evt.ctrlKey && evt.altKey && evt.keyCode==115) {

        alert("CTRL+ALT+F4"); } 

    else if (evt.shiftKey && evt.keyCode == 9) { 

        alert("Shift+TAB"); }  

    } 

这里概述了一种有效的方法:一个变量如何同时保持两个值?