![]() |
Предзагрузчик. Нужно организовать загрузчик для самого swf файла
Есть файл игры, в нем хранится основная графика (вид боевой техники и т.п.), файл весит около 2 мегабайт. Вся дополнительная графика (такая как деревья, вода, трава и т.п.) подгружается отдельно, и для этого организованы предзагрузчики.
Но вопрос вот в чем, а как можно организовать загрузчик для самого swf файла? Иначе те, у кого медленный инет могут подумать, что вообще ничего не грузится |
Если приложение в разработке - можно сделать внутренний прелоадер.
Это тут было. Если приложение уже собрано - можно сделать внешний прелоадер. Рассматриваете основной файл приложения просто как мувик и грузите его. Когда он загрузился - кидаете его на сцену и все. |
Цитата:
Что мне даст внутренний прелодер? Я то сам знаю, что все грузится. А для дополнительной графики внутренние прелодеры уже есть |
Один из спсособов:
- Скачать FlashDevelop (даже если не в нем разрабатываете) - Запустить - Проект -> Новый -> создать проект "AS 3 с прелоадером" - Посмотреть как оно это сделано |
Да как делается сам прелодер я знаю. Или может я не совсем понял здесь.
Т.е. нужно создать один небольшой файл, который будет быстро загружаться сам, а потом тянуть файл игры с сервера? ФлешДевелоп создает такой класс прелодера: Код AS3:
|
а в классе FunnyWar есть такая строчка перед объявлением класса?
Код AS3:
|
Аха. Frame factory и прелоадер готов за 2 минуты.
|
Давно не компилил во Флэше, но вроде там надо галочку "грузить в первый кадр" снять со всех объектов в библиотеке (кроме тех что относятся к прелоадеру конечно).
|
Угу, а потом во 2 кадр положить все эти объекты. Инициализировать всё в 3. Ужас. короче )
|
Цитата:
Почитал эту статью, сделал загрузчик как там описано: Код AS3:
Код AS3:
В статье написано, что тег Frame вынуждает компилятор создать 2 кадра, в персом работает загрузчик, во втором, начинает грузиться отстальное. Как можно заметить, в коде я добавил строчку: Код AS3:
В чем подвох? :confused: Цитата:
Цитата:
|
|
Увы, не мой случай.
Чтобы ситуация была всем ясна, вот как у меня все построено: Есть .fla файл, в библиотеке которого хранится куча объектов. На таймлайне в этом файле вообще ничего не инициализируется. Т.е. есть один слой, на котором один пустой кадр, всё. В качестве класса документа в данный момент к нему прикручен класс FunnyWar. Делать 2 кадра бессмысленно, так как все равно будет грузиться весь файл, не зависимо от того вызвать конструктор FunnyWar в первом или во втором кадре. Загрузчик из флеш девелоп (как я уже говорил выше) работает, но так же после загрузки файла целиком. Похоже единственное решение - это сделать еще один файл, который и будет грузить с сервера основной |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Код AS3:
|
Цитата:
Мне вообще непонятно, зачем вы пытаетесь использовать класс прелоадера от ФД во Флэш ИДЕ. Совершенно разные компиляторы, совершенно разные способы работы с библиотекой. Во Флэш ИДЕ вам надо физически создать 2 кадра на таймлайне, убрать те самые галки, которые "не работают", в первом кадре отобразить прелоадер, во втором инициализировать FunnyWar. Прелоадер должен показывать все что ему надо и переводить приложение на следующий кадр после полной загрузки. Как всегда и делалось во Флэше. В ФД нет таймлайна, на котором можно так все раскидать, поэтому у него такой специальный прелоадер заботливо добавлен в шаблоны. Во Флэше-то он зачем? Вся его задача - сымитировать эти "два кадра на таймлайне". |
goodguy, cделайте внешний загрузчик, если это будет проще
никто этого не заметит код, конечно, могу выложить, но там все очевидно. главное - не забыть контекст загрузки прописать ЗЫ. А, вообще-то, завязывайте с компиляцией во FlashIDE. :) |
Цитата:
Делал первый кадр, вызывал в нем метод stop(); и вставлял код загрузчика. После того как загрузчик завершал загрузку, вызывал nextFrame(); Во втором кадре уже: Код AS3:
Цитата:
Цитата:
Добавлено через 37 минут Вопрос исчерпан. Сделал все-таки внешний загрузчик: Код AS3:
|
на сайт уже выкладывали?
не будет работать по крайней мере не должно |
Не выкладывал.
Цитата:
Путь к файлу то я потом поменяю, и кросдоменную политику добавлю. Или дело не в этом? |
Пишу на AS3 совсем недавно. Нужен совет по загрузчику.
Пытался сделать как в предыдущем посте (внешний). Трейсится процент загрузки нормально, но после 100% сразу выскакивает ошибка: Код:
VerifyError: Error #1014: Class с_human could not be found.Может что-то с загрузчиком намудрил? Главная флешка сама по себе компилится и работает нормально. |
Цитата:
Например, я вот так определяю контекст: Код AS3:
|
О как, не знал, не знал.. Спасибо за подсказку
|
В ряде случаев можно обходиться более простой конструкцией:
Код AS3:
http://help.adobe.com/ru_RU/AS3LCR/F...erContext.html |
Не пашет :(
Причем и контекст загрузки делал, и кроссдоменник на сервер заливал, все бестолку. Файл качается, доходит до 100% и вместо добавления его на сцену, выдает ошибку 2121. Сколько не гуглил, все время нахожу рекомендации сделать так: Security.allowDomain("нужный домен/ или *"); Это работает для каких-нибудь картинок, но не для swf файлов. Уже и не знаю куда копать... А если залить в контакт, то вместо отображения процентов загрузки, вообще выдает слово Infinity. И на этом, естественно, все останавливается. Добавлено через 25 минут Такс.. первая проблема решена. Если у кого-то возникнет подобная проблема, то нужно добавить строчку Security.allowDomain("домен"); не только в файл который згружает другой swf, но и в главный класс загружаемого swf. А вот с контактом понять пока не могу.. Добавлено через 54 минуты вывод информации о загрузке показывает, что он не может получить величину загружаемого файла. Строчка Код AS3:
Код AS3:
Кто знает как исправить? п.с. Никаких ошибок не выдает при загрузке, просто не грузит и все. Везде располагал блоки try / catch все время нормально срабатывают блоки try |
Вопросы по ВК лучше задать в группе API VK, там могут помочь.
А если поставить загрузчик не в ВК, а просто на обычный сайт - загрузка нормально проходит? |
Вот теперь я точно в ступоре. На работе, где статичный айпи и скоростной инет, нормально грузится все. Дома на динамическом ip и не очень хорошем инете не работает :(
Значит дело даже не во флешке. А кто знает, есть ли какое-то определенное время ожидания ответа от сервера после которого флеш плеер закрывает соединение? Может это из-за того, что у меня инет всего мегабитный? Если есть, можно ли это значение как-то поменять? Все происходит так: подключается, несколько секунд (примерно 5 - 7) показывает 0%, а потом Infinity. Если это не ограничение по времени соединения, то что это вообще может быть... Хотя пинг у сервера, на который залил файлы всего 63 - 65 миллисекунд. Думаю, очень даже неплохой. Цитата:
|
Создал новый .fla, в пером кадре написал ему код
Код AS1/AS2:
PHP код:
|
Цитата:
|
| Часовой пояс GMT +4, время: 11:34. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.