Шаблон: Конфигурационный массив для Переключения между сценами в Adobe Animate HTML5 баннере
Primary tabs
Основная идея переключения между сценами изложена здесь.
Ниже приведем пример с использованием массива конфигурации, который позволяет легко добавить сколько угодно сцен, не исправляя условии блоков if (что удобно для поддержки не программистом):
this.stop(); var defaultWidth = lib.properties.width; var parent = canvas.parentElement; while(parent.parentElement) { parent = parent.parentElement; } // конфигурация - связь ширины окна и номера первого кадра сцены // Перечисляем по возрастанию ШИРИНЫ сцены, первый элемент - для минимальной const scenesConfig = [ { width: 300, frame: 810 }, { width: 750, frame: 270 }, { width: 850, frame: 0 }, ]; var main = this.container; // определяем родительский слой window.addEventListener("resize", onWindowResize); function onWindowResize() { // ..... какие-то еще действия на событие изменения ширины var currWidth = parent.clientWidth; defineScene(scenesConfig, currWidth, main); // вызов функции определения сцены } onWindowResize(); // инициализация - подбор сцены при открытии страницы function defineScene(scenesConfig, currWidth, mainLayer) { var length = scenesConfig.length; for (var i=1; i < length; i++) { var item = scenesConfig[i]; var prevItem = scenesConfig[i-1]; if (currWidth < item.width) { //console.log('define', i, prevItem.frame); mainLayer.gotoAndStop(prevItem.frame); return; } } mainLayer.gotoAndStop(scenesConfig[length-1].frame); }
-- при данном подходе нам достаточно задать только два элемента:
- Имя главного слоя:
var main = this.имяСлоя;
в примере выше это:
var main = this.container;
- Массив конфигурации ширины сцены и номера кадра, с перечислением элементов в порядке возрастания ширины сцены в примере выше это:
const scenesConfig = [ { width: 300, frame: 810 }, { width: 750, frame: 270 }, { width: 850, frame: 0 }, ];
где каждый элемент содержит значение в формате:
{ width: ширинаСцены, frame: номерПервогоКадраЭтойСцены }
- Log in to post comments
- 947 reads