Проверить Matter.js
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

66 行
2.1KB

  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. };
  57. // Конструктор.
  58. this.создать();
  59. }