JavaScript左右键点击功能

5
这是我正在制作的HTML5画布游戏。在游戏中,有一个角色拥有一把枪,他可以开火和装弹。我希望玩家使用鼠标左键进行射击,使用右键进行装弹。
我需要的是,每当我单击鼠标左键时,我的玩家对象(Player1.isLeftClick)中的一个变量变为true,当我松开按钮时,相同的变量变为false。右键也应该发生同样的事情,但使用另一个变量(Player1.isRightClick)。我还希望它能够适用于所有最流行的浏览器(Chrome,Firefox,Explorer等)。我必须使用纯JavaScript,不能使用像jQuery这样的库! 如果有帮助的话,我已经为键盘上下和鼠标移动事件设置了事件处理程序。这些事件处理程序在初始化函数中创建,在加载图像时初始化游戏。
document.addEventListener('mousemove', mousePos, false);
document.addEventListener('keydown', checkKeyDown, false);
document.addEventListener('keyup', checkKeyUp, false); 

我还有一个名为mie的变量,如果使用的浏览器是Internet Explorer,则mie为true,否则为false。
1个回答

13
你想使用e.button属性来检查哪个鼠标事件被调用了。左键点击的值在IE中是不同的。你的代码应该像这样:
var left, right;
left = mie ? 1 : 0;
right = 2;

document.body.addEventListener('mousedown', function (e){
    if(e.button === left){
        Player1.isLeftClick = true;
    }
    else if(e.button === right){
        Player1.isRightClick = true;
    }
}, false);

document.body.addEventListener('mouseup', function (e){
    if(e.button === left){
        Player1.isLeftClick = false;
    }
    else if(e.button === right){
        Player1.isRightClick = false;
    }
}, false);

演示


2
jsfiddle:未捕获的 ReferenceError: mie 未定义 - Kroid
1
@Kroid,是的。您需要通过您最喜欢的IE检测方式来填充它。查看其中一些 - hypers
你可以通过仅检查按钮是否正确(2)来简化代码。如果它不是正确的,则是左侧的按钮。 - SingleStepper
@SingleStepper 这不是真的 - 鼠标通常也有可点击的滚轮按钮(有时还有其他按钮,用于游戏鼠标)。你应该测试条件的相等性,而不是测试不等式并推断它。 - Some Guy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接