Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   gotoAndPlay() не переходит в некоторые кадры (http://www.flasher.ru/forum/showthread.php?t=173999)

nameveiof 15.01.2012 22:35

gotoAndPlay() не переходит в некоторые кадры
 
Вложений: 1
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, сделайте так:

Код AS1/AS2:

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

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

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

crazyone 16.01.2012 14:02

Цитата:

Сообщение от Tails (Сообщение 1057200)
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

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


Часовой пояс GMT +4, время: 23:27.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.