4

これは私が作っているHTML5キャンバスゲーム用です。ゲームには銃を持ったキャラクターがいて、銃を撃ってリロードすることができます。射撃にはマウスの左ボタンを、リロードにはマウスの右ボタンを使用してほしい。

必要なのは、マウスの左ボタンをクリックするたびに、プレーヤーオブジェクト(Player1.isLeftClick)の変数がtrueになり、ボタンを離すと同じ変数がfalseになることです。同じことがマウスの右ボタンでも発生するはずですが、別の変数(Player1.isRightClick)を使用します。また、最も人気のあるすべてのブラウザー(Chrome、Firefox、Explorerなど)で使用できるようにしたいと思います。 また、jQueryのようなライブラリを含まない純粋なJavaScriptを使用する必要があります。 私はすでにキーボードイベントでこれを達成しましたが、マウスイベントでこれが必要です。

それが役に立ったら、私はすでにキーボードの上下とマウスの動きのためのイベントハンドラーを持っています。これらは、画像がロードされたときにゲームを初期化するinit関数で作成されます。

document.addEventListener('mousemove', mousePos, false);
document.addEventListener('keydown', checkKeyDown, false);
document.addEventListener('keyup', checkKeyUp, false); 

また、使用するブラウザーがInternet Explorerの場合はtrueで、他のブラウザーの場合はfalseであるmieという変数もあります。

4

1 に答える 1

12

プロパティを使用して、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);

デモ

于 2012-08-25T20:38:34.633 に答える