PDA

Просмотр полной версии : gotoAndPlay() не переходит в некоторые кадры


nameveiof
15.01.2012, 22:35
gotoAndPlay(номер); по непонятной причине не переходит в некоторые кадры
при том что это единственный скрипт в ролике, а на других объектах и кадрах скриптов нет

но если удалить некоторые объекты, например папку "tov" с содержащимися слоями
тогда команда работает нормально

------------
приведу пример:
в ролике 445 кадров
gotoAndPlay(); с указанием любого кадра до 184, переходит на указанный кадр
если указать любой кадр больше 184 gotoAndPlay перекиывает только на 184

но как только я удалю папку "tov" с подслоями gotoAndPlay(); переходит на любой кадр до 445 нормально, как и должно быть
может кто-нибудь объяснить в чём причина такого странного поведения?

я чего-то не понял или это баг?

----------------------
файл в приложении

параметры файла
as2
flash10
сохранено в Flash cs5

Tails
15.01.2012, 23:36
Да, это какой-то баг. Видимо ролик неким чудесным образом не успевает загрузиться полностью в первом кадре, весьма странно, хотя скорее всего это флеш его косячно компилирует, или эти новые твины - глюченые.

Пара способов обойти проблему:

Переходить на 385 кадр не в 1, а в 2 кадре.
Или сделать так, чтобы банер начинался во втором кадре, а первый - оставить пустым.

crazyone
16.01.2012, 02:06
Банально - не успевает загрузиться. Такие переходы действительно лучше делать со второго кадра.
Если интересно - сделайте trace(_framesloaded); и увидите, что у вас всего 180 с чем-то кадров успевает подгрузиться. А если грузиться будет через медленный интернет - то вобще может только несколько кадров загрузить.

Tails
16.01.2012, 12:24
crazyone
Да, но всё дело в том, что это происходит не на сервере, а при тестовом просмотре, а также при запуске отдельного swf на компьютере.

mooncar
16.01.2012, 12:48
nameveiof, сделайте так:

setTimeout(gplay, 100, 383);

function gplay(num:Number)
{
gotoAndPlay(num);
trace(_currentframe); //проверяем, куда попали
}

383 - требуемый кадр
100 - задержка в миллисекундах

Но вообще лучше использовать прелоадер, предзагрузчик.

crazyone
16.01.2012, 14:02
crazyone
Да, но всё дело в том, что это происходит не на сервере, а при тестовом просмотре, а также при запуске отдельного swf на компьютере.

Процесс обработки кадров от этого никак не изменяется. Как был асинхронным, так и остался. Как только загрузился первый кадр, его код сразу выполняется, не дожидаясь загрузки и инициализации всего остального.

Tails
16.01.2012, 14:22
crazyone
Первый раз такое вижу. Значит, будем делать прелоадеры и для настольных приложений :quiet:

crazyone
16.01.2012, 16:26
Я не говорил, что нужны прелоадеры для десктопных приложений.
Но если инициализация твоих приложений происходит в первом кадре, а ресурсы при этом разбросаны по таймлайну и не грузятся в первый кадр, то перед их использованием прийдется проверить их доступность.

nameveiof
16.01.2012, 17:27
Спасибо. странный нюанс.
странно что в локальной среде требуется какое либо время на загрузку
получается какая то непроизвольная имитация скачивания.

перемотку делал для удобства редактирования баннера чтобы не ждать лишний раз
тут прелоадер был бы лишним телодвижением для такой мелочи
просто перенос команды более поздние кадры 5 9 15 решают проблему
при 30 кадрах/c удобно

mooncar
16.01.2012, 18:13
Я, например, всегда оставляю первый кадр для предлоадера, в том числе и для десктопных приложений. Часто грузится много графики извне, по готовности - переход в рабочий кадр.