Проверить Matter.js
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

73 řádky
2.2KB

  1. function Звуки(ключники, события) {
  2. this.создать = function() {
  3. this.задано = {};
  4. this.аудио = {};
  5. события.подписать(this);
  6. var тут = this;
  7. ключники.push(function(ключ, путь, значение) {
  8. тут.обработатьКлюч(ключ, путь, значение);
  9. });
  10. };
  11. this.обработатьКлюч = function(ключ, путь, значение) {
  12. if (!путь[0].startsWith("звуки"))
  13. {
  14. return;
  15. }
  16. var имя = путь[1];
  17. var свойство = путь.slice(2).join(".");
  18. if (!this.задано[имя])
  19. {
  20. this.задано[имя] = {};
  21. }
  22. this.задано[имя][свойство] = значение;
  23. };
  24. this.обработатьСобытие = function(событие) {
  25. for (var имя in this.задано)
  26. {
  27. var значения = this.задано[имя];
  28. if (!значения.файл)
  29. {
  30. continue;
  31. }
  32. for (var свойство in значения)
  33. {
  34. if (свойство.startsWith("события"))
  35. {
  36. var значение = значения[свойство];
  37. if (событие == значение)
  38. {
  39. this.воспроизвести(значения.файл, значения.повторять);
  40. return;
  41. }
  42. }
  43. }
  44. }
  45. };
  46. this.воспроизвести = function(файл, повторять)
  47. {
  48. if (!this.аудио[файл])
  49. {
  50. this.аудио[файл] = new Audio(файл);
  51. }
  52. var звук = this.аудио[файл];
  53. звук.pause();
  54. звук.currentTime = 0;
  55. звук.play();
  56. if (повторять)
  57. {
  58. звук.onended = function() {
  59. звук.play();
  60. }
  61. }
  62. };
  63. // Конструктор.
  64. this.создать();
  65. }