|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- function Звуки(ключники, события) {
- this.создать = function() {
- this.задано = {};
- this.аудио = {};
- события.подписать(this);
- var тут = this;
- ключники.push(function(ключ, путь, значение) {
- тут.обработатьКлюч(ключ, путь, значение);
- });
- };
-
- this.обработатьКлюч = function(ключ, путь, значение) {
- if (!путь[0].startsWith("звуки"))
- {
- return;
- }
-
- var имя = путь[1];
- var свойство = путь.slice(2).join(".");
-
- if (!this.задано[имя])
- {
- this.задано[имя] = {};
- }
- this.задано[имя][свойство] = значение;
- };
-
- this.обработатьСобытие = function(событие) {
- for (var имя in this.задано)
- {
- var значения = this.задано[имя];
- if (!значения.файл)
- {
- continue;
- }
- for (var свойство in значения)
- {
- if (свойство.startsWith("события"))
- {
- var значение = значения[свойство];
- if (событие == значение)
- {
- this.воспроизвести(значения.файл, значения.повторять);
- return;
- }
- }
- }
- }
- };
-
- this.воспроизвести = function(файл, повторять)
- {
- if (!this.аудио[файл])
- {
- this.аудио[файл] = new Audio(файл);
- }
- var звук = this.аудио[файл];
- звук.pause();
- звук.currentTime = 0;
- звук.play();
-
- if (повторять)
- {
- звук.onended = function() {
- звук.play();
- }
- }
- };
-
- // Конструктор.
- this.создать();
- }
|