2014-09-11 86 views
0

我是新来的,也是新的网页编码。所以我试图让一个按钮被按下时移动我的游戏角色的功能。当按下按钮时,布尔值将变为“true”并且字符移动。我正在尝试以某种方式做到这一点。有人能让我明白什么是使这项工作最好的方法吗?我还需要为所有其他按钮(a,s,d,箭头)执行此操作。当按钮按下时移动字符/照相机的功能

var wButton = false; 

function newfunction() 


document.querySelector('#keyButtonW').addEventListener('mousedown', function(event) { 
    keyButtonPressed("wButton", true); 
}); 

document.querySelector('#keyButtonW').addEventListener('mouseup', function(event) { 
    keyButtonPressed("wButton", false); 
}); 

document.querySelector('#keyButtonW').addEventListener('mouseleave', function(event) { 
    keyButtonPressed("wButton", false); 
}); 
+0

'keyButtonPressed'函数是什么样的? – duncan 2014-09-11 12:59:42

+0

需要更多信息。你想要实现什么样的角色/动作?通常,css与gif或png等图像一起使用。我强烈建议寻找像jQuery这样的Javascript框架来让你的生活更轻松。除此之外,您的事件侦听器应该促进按钮的“真/假”状态。请参阅@ Hotted24回答了解切换键的示例。 – fyrye 2014-09-11 12:59:45

+0

是的,很抱歉我不是很擅长解释这一点,但keyButtonPressed实际上是我需要这个工作的功能。而且我将它制作成平板电脑/手机,所以我需要在屏幕上制作移动按钮。我正在寻找一个照顾所有按钮的功能。 – juwss 2014-09-11 13:20:12

回答

0

假设转换是将您的字符的方法,也许你应该做一个大maskArray:

var keyboard = []; 
function keyDown(e) 
{ 
    var key = event.keyCode || event.which; 
    keyboard[key] = true; 
} 

function keyUp(e) 
{ 
    var key = event.keyCode || event.which; 
    delete keyboard[key]; 
} 

function keyAction() { 
    for (i in keyboard) 
    { 
     if (keyboard[i] == true) 
     { 
      switch(eval(i)) 
      { 
       case 90: //Z 
        character.translateY(-1); 
        break; 
       case 83: //S 
        character.translateY(1); 
        break; 
       case 81: //Q 
        character.translateX(-1); 
        break; 
       case 68: //D 
        character.translateX(1); 
        break; 
      } 
     } 
    } 

    return false; 
} 

document.addEventListener("keydown", keyDown, false); 
document.addEventListener("keyup", keyUp, false); 

简而言之keyAction()主循环内/渲染循环。

的这个值是不使滞后发生,当你点击一个按钮,并与多个按管理帮助=)

编辑

拿到钥匙的数字,只是把一个控制台。记录(key)在keyDown()的末尾。