我正在使用 html5 画布和 javascript 开发迷宫游戏(我更喜欢使用 jquery 库进行编码)。-该游戏适用于移动设备,我对使用触摸事件完全陌生
在画布上,我添加了迷宫图像 - 一个黑白 gif 迷宫。
我将使用 trouch 来在迷宫中导航。
这是我所做的:
为触摸添加事件监听器:
window.addEventListener("touchmove", handleMove, false);
添加了处理移动的功能:
函数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;
}