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

67 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. 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. for (var номер in мир.ввод.задано)
  32. {
  33. var задано = мир.ввод.задано[номер];
  34. var клавиши = [];
  35. for (var элемент in задано)
  36. {
  37. if (элемент.startsWith("клавиши"))
  38. {
  39. клавиши.push(задано[элемент]);
  40. }
  41. }
  42. if (
  43. клавиши.includes(клавиша) &&
  44. задано.действие
  45. ) {
  46. console.debug("исполнить действие", задано.действие, "клавиша", клавиша, "клавиши", клавиши);
  47. }
  48. }
  49. }