Проверить Matter.js
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.6KB

  1. мир.ввод = {
  2. клавиши: {},
  3. задано: {},
  4. };
  5. // // // //
  6. мир.ключники.push(function(ключ, путь, значение){
  7. if (!ключ.startsWith("ввод"))
  8. {
  9. return;
  10. }
  11. var номер = путь[1];
  12. if (!(номер in мир.ввод.задано))
  13. {
  14. мир.ввод.задано[номер] = {};
  15. }
  16. var свойство = путь.slice(2).join(".");
  17. мир.ввод.задано[номер][свойство] = значение;
  18. });
  19. // // // //
  20. window.addEventListener("keydown", function(o) {
  21. обработатьКлавишу(o.key, true);
  22. });
  23. window.addEventListener("keyup", function(o) {
  24. обработатьКлавишу(o.key, false);
  25. });
  26. // // // //
  27. function обработатьКлавишу(клавиша, нажата)
  28. {
  29. // Исключаем повторы.
  30. if (мир.ввод.клавиши[клавиша] == нажата)
  31. {
  32. return;
  33. }
  34. мир.ввод.клавиши[клавиша] = нажата;
  35. for (var номер in мир.ввод.задано)
  36. {
  37. var задано = мир.ввод.задано[номер];
  38. var клавиши = [];
  39. for (var элемент in задано)
  40. {
  41. if (элемент.startsWith("клавиши"))
  42. {
  43. клавиши.push(задано[элемент]);
  44. }
  45. }
  46. if (
  47. клавиши.includes(клавиша) &&
  48. задано.действие
  49. ) {
  50. мир.действия.исполнить(задано.действие);
  51. }
  52. }
  53. }