私はhtml5キャンバスとjavascriptを使用して迷路ゲームに取り組んでいます(コーディングにはjqueryライブラリを使用することを好みます)。-このゲームはモバイル デバイス向けで、タッチ イベントの使用に関してはまったくの初心者です。
キャンバスに、迷路の画像 (白黒の gif 迷宮) を追加しています。
迷路をナビゲートするためにトラウチを使用します。
これが私がやったことです:
タッチ用のイベント リスナーを追加します。
window.addEventListener("touchmove", handleMove, false);
移動を処理する関数を追加しました:
function handleMove(e){ e.preventDefault();
// Check the touch position on canvas var checkx = event.targetTouches[0].pageX - canvas.offsetLeft; var checky = event.targetTouches[0].pageY - canvas.offsetTop; var collision = checkcollision(checkx,checky); if (collision == 0){ x = checkx; y = checky; draw(imgWidth,imgHeight,ctx); } else { // HERE IS THE PROBLEM - WHAT SHOULD I DO? //BECAUSE IF THE TOUCH EVENT CONTINUES, THE COLLISION // FUNCTION WILL HIT THE WHITE COLOR AGAIN //AND THE BALL WHICH I AM NAVIGATING THROUGH THE MAZE WILL // PASS THE BORDER. }
};
衝突をチェックしています -ここに私の問題があります
黒い枠にぶつかったらどうすればいいですか?
ユーザーが動き続けてタッチイベントが続くと、再び白を打ったときに、迷路をナビゲートしているボールが黒い境界線を飛び越えます。
それで、私はイベントを止めることができました... 何かアイデアはありますか?
衝突関数は次のとおりです。
function checkcollision(checkx, checky){
var collision = 0;
var imgd = ctx.getImageData(checkx, checky, 15, 15);
pix = imgd.data;
for (var i = 0; n = pix.length, i < n; i += 4){
if (pix[i] == 0) {
collision = 1;
} else if(pix[i] == 255 && pix[i + 1] == 0){
winner = "yes";
}
}
//console.log("colision fromn the function: "+collision);
return collision;
}