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.

080.Анимации.js 1.6KB

2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. function Анимации(события)
  2. {
  3. this.создать = function()
  4. {
  5. this.задано = {};
  6. this.анимации = {};
  7. };
  8. this.запустить = function(имя, элемент)
  9. {
  10. // Останавливаем прошлый экземпляр этой анимации на том же элементе.
  11. this.остановить(имя, элемент);
  12. // Запускаем новый экземпляр анимации на том же элементе.
  13. let ключ = `${элемент.id}`;//-${имя}`;
  14. this.анимации[ключ] = new Анимация(элемент, this.задано[имя]);
  15. }
  16. this.обработатьКлюч = function(ключ, путь, значение)
  17. {
  18. if (путь[0] != "анимации")
  19. {
  20. return;
  21. }
  22. let имя = путь[1];
  23. let свойство = путь.slice(2).join(".");
  24. if (!this.задано[имя])
  25. {
  26. this.задано[имя] = {};
  27. }
  28. this.задано[имя][свойство] = значение;
  29. события.уведомить(`анимации/${имя}`);
  30. };
  31. this.остановить = function(имя, элемент)
  32. {
  33. let ключ = `${элемент.id}`;//-${имя}`;
  34. if (ключ in this.анимации)
  35. {
  36. this.анимации[ключ].остановить();
  37. delete this.анимации[ключ];
  38. }
  39. }
  40. // Конструктор.
  41. this.создать();
  42. };