diff --git a/380.звуки.js b/380.звуки.js
new file mode 100644
index 0000000..df1f623
--- /dev/null
+++ b/380.звуки.js
@@ -0,0 +1,65 @@
+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();
+ };
+
+ // Конструктор.
+ this.создать();
+}
diff --git a/700.пуск.js b/700.пуск.js
index 237e958..768f1ea 100644
--- a/700.пуск.js
+++ b/700.пуск.js
@@ -11,4 +11,5 @@
// Запустить.
мир.физика.создать();
мир.столкновения.создать();
+мир.звуки = new Звуки(мир.ключники, мир.события);
мир.обновить();
diff --git a/800.пример.json.js b/800.пример.json.js
index 7726408..8014510 100644
--- a/800.пример.json.js
+++ b/800.пример.json.js
@@ -414,11 +414,6 @@ function ПодкидываниеСтрелы() {
мир.подкидываниеСтрелы = new ПодкидываниеСтрелы();
мир.подкидываниеСтрелы.завершить = function() {
мир.подкидываниеСтрелы = null;
-
- /**/var audio = new Audio("р/звуки/543927__eminyildirim__pistol-gun-cocking.wav");
- /**/audio.play();
- /**/console.debug("воспроизвели аудио");
-
};
@@ -431,7 +426,7 @@ function ОтладкаСобытий() {
this.обработатьСобытие = function(событие) {
if (событие == "закинули стрелу")
{
- console.debug("событие", событие);
+ //console.debug("событие", событие);
}
};
diff --git a/index.html b/index.html
index f2fa94c..f0585d7 100644
--- a/index.html
+++ b/index.html
@@ -60,6 +60,7 @@
+