Проверить 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.

73 lines
1.7KB

  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. console.debug("ввод", ключ, путь, значение);
  19. });
  20. // // // //
  21. window.addEventListener("keydown", function(o) {
  22. обработатьКлавишу(o.key, true);
  23. });
  24. window.addEventListener("keyup", function(o) {
  25. обработатьКлавишу(o.key, false);
  26. });
  27. // // // //
  28. function обработатьКлавишу(клавиша, нажата)
  29. {
  30. // Исключаем повторы.
  31. if (мир.ввод.клавиши[клавиша] == нажата)
  32. {
  33. return;
  34. }
  35. мир.ввод.клавиши[клавиша] = нажата;
  36. for (var номер in мир.ввод.задано)
  37. {
  38. var задано = мир.ввод.задано[номер];
  39. var клавиши = [];
  40. for (var элемент in задано)
  41. {
  42. if (элемент.startsWith("клавиши"))
  43. {
  44. клавиши.push(задано[элемент]);
  45. }
  46. }
  47. if (
  48. клавиши.includes(клавиша) &&
  49. задано.действие
  50. ) {
  51. мир.действия.исполнить(задано.действие);
  52. }
  53. }
  54. }