2016-08-19 2 views
0

私はAndroidでゲームを移植しようとしていますが、プレイヤーがジャンプするスペースを押すと、ユーザーが触れるとスペースバーイベントをシミュレートするための解決策が見つかりません...javascript/htmlのtoucheventでスペースバープレスをシミュレートする

そしてこの

/** 
* Keep track of the spacebar events 
*/ 
var KEY_CODES = { 
    32: 'space' 
}; 
var KEY_STATUS = {}; 
for (var code in KEY_CODES) { 
    if (KEY_CODES.hasOwnProperty(code)) { 
    KEY_STATUS[KEY_CODES[code]] = false; 
    } 
} 
document.onkeydown = function(e) { 
    var keyCode = (e.keyCode) ? e.keyCode : e.charCode; 
    if (KEY_CODES[keyCode]) { 
    e.preventDefault(); 
    KEY_STATUS[KEY_CODES[keyCode]] = true; 
    } 
}; 
document.onkeyup = function(e) { 
    var keyCode = (e.keyCode) ? e.keyCode : e.charCode; 
    if (KEY_CODES[keyCode]) { 
    e.preventDefault(); 
    KEY_STATUS[KEY_CODES[keyCode]] = false; 
    } 
}; 
document.addEventListener("touchstart", function(e) { 
    document.onkeydown({ keyCode: 32 }); 
}); 
document.addEventListener("touchend", function(e) { 
    document.onkeyup({ keyCode: 32 }); 
}); 

これが動作しない理由を私は理解していない:

画面

ここ

は、私が今まで見つけたコードです上記210

はあなたがハンドラを定義し、ラップすることができます ({ e.keyCode: 32});

+0

がhttp://stackoverflow.com/questions/961532/firing-a-keyboard-event-in-javascript –

答えて

1

ですジャンプ関数。必要なイベントでそれを発射する。例:

function jump(keyEvent) { /* code to jump*/} 

これは悪い考えですが、それはあなたのために働くことができます。この方法では、preventDefaultメソッドについて心配する必要はありません。あなたはヨーヨーのkeyCodeプロパティを渡しているのと同じ方法で空の関数を渡すことができ、イベントオブジェクトの操作を回避するために

function jumpHandler(e) { e.keyCode = 32; jump(e) /*object to simulate the keydown event object*/ } 

。しかし、あなたはpreventDefault機能を失います。

function jumpHandler() { jump({keyCode:32, preventDefault: function(){}}) /*object to simulate the keydown event object*/ } 

document.addEventListener('touchstart', jumpHandler); 
document.onKeydown = jump // here just the reference to the handler 

いくつかの時間は、あなたがのpreventDefaultを呼び出す代わりにfalseを返すようにしたいだけかどうか、これを伝えるのpreventDefault、 - 私の同じ振る舞いを持つことができ、関数の最後で偽returnig。

:)

+0

は動作しませんを参照してください:( – k0spwn

1

を書いてみてください、イベントからキーコードを取る必要があり、スペースバーのイベントを使用するすべてのコード

Full Game code

+0

を/ *コードでJUM *に/ (KEY_STATUS.space && player.dy === 0 &&!player.isJumping){ player.isJumping = true; player.dy = player.jumpDy; jumpCounter = 12;私は完全なジャンプコードを使用できますか? assetLoader.sounds.jump.play(); } – k0spwn

+0

はい、ジャンプ機能に必要なものをすべて入れることができます。必要なコンテキストに必要なものをすべて提供していることを確認してください。 – afmeva

+0

うまくいかなかったのですが: :http://pastebin.com/Bt09wN QW – k0spwn

関連する問題