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.

42 lines
1.2KB

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