首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将javascript游戏的键盘控件转换为触摸界面

将javascript游戏的键盘控件转换为触摸界面
EN

Stack Overflow用户
提问于 2014-04-01 19:00:41
回答 1查看 1.9K关注 0票数 0

我目前正在开发一个javascript游戏,我无法在移动设备上使用触摸控制。这是一个简单的游戏,你可以按下箭头跳跃,或向下箭头滚动。

我还想要实现触摸控制,因此触摸/控制左边的显示将使字符滚动,并通过触摸/握住屏幕的右侧,字符跳跃。

这是为向上和向下箭头工作的代码:

代码语言:javascript
运行
复制
var KEY_CODES = {
    38: 'up',
    40: 'down'
  };

  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;
    }
  };

然后我就可以让他的角色做些事情:

代码语言:javascript
运行
复制
if (KEY_STATUS.up) { stuff and things }

有什么建议、提示、建议或可能的代码碎片可以帮助我吗?提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-08 15:32:11

你应该能够使用触摸事件。在许多情况下,您可以使用为按键编写的相同函数,也可以单独编写它们。下面是一个例子

代码语言:javascript
运行
复制
  var touchedElement = document.getElementById("myElementToBeTouched");
  touchedElement.addEventListener("touchstart", funcTouchStart, false);
  touchedElement.addEventListener("touchend", funcTouchEnd, false);
  touchedElement.addEventListener("touchmove", funcTouchMove, false);

  function funcTouchStart(e) {
    //code to do what you want like set variables and check where on screen touch happened

    var touches = e.changedTouches; //gets array of touch points, to get position
  }

  function funcTouchEnd(e) {
    //code
  }

  function funcTouchMove(e) {
    //code
  }

要使它们响应左或右屏幕,您可以使用这些事件附带的touchesi.pageX,并将操作设置为只有在touchesi.pageX =0的屏幕25% (左)或最后25%为touchesi.pageX =屏幕/视口宽度的情况下才会发生。

这不是一个完整的工作例子,但我希望它足以给你一个想法,你可以做什么。如果您需要更多有关这些事件的帮助,请尝试查看MDN示例之一,如:events

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22794613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档