AS2 действует случайным образом при смене сцен в первом кадре - PullRequest
1 голос
/ 15 мая 2010

У меня есть флэш-фильм, содержащий сцены: scene1, scene2. Я выбрал порядок так, чтобы сцена1 запускалась первой, меня попросили добавить функцию, позволяющую передавать flashvars, если fv_change равен единице, то сцена2 должна появляться первой при загрузке фильма.

Я включил следующий код в первый кадр scene1 некоторого слоя:

this.onEnterFrame = function() {
    delete this.onEnterFrame;
    if (isset==undefined && _root.fv_change && _root.fv_change==1) {
        isset = true;
        gotoAndStop("scene2",1);    
    }
}

при тестировании в моей среде флэш-памяти все работало нормально, когда я экспортировал его в комбо HTML & SWF, я получил случайные результаты, несколько раз обновлял страницу, и иногда появлялся scene2, а иногда оставался со сценой1 .

Я что-то не так делаю? Как правильно изменить порядок сцены, используя AS2 и внешние данные (в этом отношении flashvars).

Ответы [ 2 ]

0 голосов
/ 17 мая 2010

Нашли решение благодаря вашему предложению и некоторому поиску в Google. Кажется, фильм не закончил загрузку, поэтому я создал сцену с именем preloader, которая стала первой сценой. Внутри кадра 2 (я обнаружил, что кадр 1 не всегда работает лучше):

this.onEnterFrame = function(){
    this.stop();
    if(this.getBytesLoaded() >= this.getBytesTotal() && this.getBytesLoaded() > 0){
        if (_root.fv_change && _root.fv_change ==1) {
            _root.gotoAndPlay("frameLabelForScene2Frame1");
        } else {
            _root.gotoAndPlay("frameLabelForScene1Frame1");
        }
        delete this.onEnterFrame;
    }
};

Как вы помните, сцена 1 должна была запускаться первой. если параметр был предоставлен, scene2 должен был запускаться первым. Я думаю, что следует подчеркнуть следующие моменты:

  • Использовать второй кадр в предзагрузчике
  • Иметь код для ожидания завершения загрузки
  • ВАЖНО использовать метки кадров вместо имен сцен с помощью gotoAndPlay
  • используйте _root.gotoAndPlay, а не просто gotoAndPlay.
  • просто чтобы быть в безопасности, я включил часть 'else', прелоадер пошел бы в конечном итоге на scene1, но я хотел убедиться, что он сделал

Надеюсь, это кому-нибудь поможет

0 голосов
/ 16 мая 2010

Вероятно, он не может перейти к сцене 2 в тех случаях, когда этот кадр еще не загружен - попробуйте проверить его в IDE с имитацией загрузки (дважды нажмите ctrl + Enter), чтобы быть уверенным. Если это проблема, попробуйте добавить предварительный загрузчик до тех пор, пока не будет загружен нужный кадр (или весь фильм). (См. Пример кода здесь .)

...