如何修复这些触摸事件?如果有2个手指但不是1个,则事件会响应

时间:2018-04-21 17:46:27

标签: javascript canvas mobile html5-canvas

我正在制作一款简单的手机游戏。

目标是:

  • 如果在屏幕的右半部分感应到触控启动事件,请进行角色漫步。

  • 如果在右半部分感受到touchend事件,则停止角色。

  • 如果屏幕左半部分发生touchend事件,则跳转角色。

我的逻辑非常适用于鼠标上下事件,因此我非常确定在touchstart和end函数中可以做些什么。

如果两个手指用作一个按压,它似乎工作正常。

如果只使用一根手指,它就无法正常工作:触摸任何地方都会开始运动,但没有任何东西可以阻止它。

以下是触摸输入和相关功能的代码:

CheckWhichScreenHalf = function(e) {

    loc = WindowToCanvas(e.pageX, e.pageY);
    onScreenY = loc.y >= 0 && loc.y <= gameCanvas.height;
    leftSideX = loc.x >= 0 && loc.x < gameCanvas.width/2;
    rightSideX = loc.x > gameCanvas.width/2 && loc.x <= gameCanvas.width;
    if (onScreenY && leftSideX){
        return 'left';
    }
    else if (onScreenY && rightSideX){
        return 'right';
    }
    else return 'neither';
};

TouchMove = false;
TouchJump = false;

gameCanvas.ontouchstart = function(e){

    if (imagesHaveBeenLoaded) {
        e.preventDefault();
        for (var i = 0; i < e.touches.length; i++){
            var side = CheckWhichScreenHalf(e.touches.item(i));
            if (side === 'right'){
                TouchMove = true;
            }
        }
    }
}
gameCanvas.ontouchend = function(e){

    if (imagesHaveBeenLoaded) {
        e.preventDefault();
        for (var i = 0; i < e.touches.length; i++){
            var side = CheckWhichScreenHalf(e.touches.item(i));
            if (side === 'right'){
                TouchMove = false;
            }
            else if (side === 'left'){
                playerJumping = true;
            }
        }
    }
}

游戏可以在这里播放:http://webstudentwork.com/jgossling/MMWD/mp2/mp2.html

0 个答案:

没有答案