Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   прелоадер - как сделать? (http://www.flasher.ru/forum/showthread.php?t=113462)

ramshteks 30.06.2008 01:56

прелоадер - как сделать?
 
Вообщем проблема в следующем...

короче что то несуразное и не внятное в голове моей!

как сделать прелоадер?!

два варианта в голове:

1.Две флешки, одна грузит и говорит скока загрузилась, а потом подменяет себя же загруженной.

2.Как частенько делалось в ас2 на первый фрейм кинуть мувик, класс на него со всеми вытекающими событиями повесить


с первым наверное все понятно... но хотелось бы вторым способом но на ас3.

Начал делать, два кадра сделал в кадре пишу stop() , так этот гад работает до тех пор пока не пропишишь DocumentClass. Как тока добавил начал на меня ругаться флешь... ну ладна думаю ща я тормозну сцену из главного класса, а не тут то было
Код:

stage.stop();
root.stop();
parent.stop();

меня отругали...

так вот вопрос... как лучше решить этот вопрос на ас3, есть ли способ управлять сценой из классов... или нужно погеройски делать все только на первом фрейме???

можно ли кучу фреймов и documentClass прописать и сценой управлять?

да и еще момент, есть ли какое нибудь событие чтобы отследить поступающие данные, видел классы Loader и тому подобные но как я понял их использование подразумевает что ты что то грузишь во флешку..., а я хочу для прелоадера, что то не хочется Event.ENTER_FRAME пользоваться, пробовал ProgressEvent но он что то у меня не цеплялся к stage...

что то я в непонятках.... сразу говорю: перерыл форум и в нете покапался...) не ругайтесь сильна :rolleyes:

Alex Lexcuk 30.06.2008 02:36

Вот нашел в гугле на первом месте.
http://etcs.ru/blog/as3/export_in_se...rame_flash_cs3

ramshteks 30.06.2008 18:14

хм... если честно, что то слишком замутно! я думаю есть подход куда проще...

Alex Lexcuk 30.06.2008 18:28

swf показать процент загрузки самой себя.
Если так, то другого пути нет.
А что там сложного и пример есть. Снять галку напротив export for first frame
Поставить в опциях загрузка классов во второй фрейм.
Написать класс для мувика, наподобие класса для звезды или box в примере добавить его на рабочее поле мувика загрузщика во второй кадр, там уже есть звезда и коробка.
И вызвать его в классе program. Проверить лоадер можно ctrl+enter. Залесть в появившийся проигрыватель view - download setting - 14 кБт/c
Повторно нажать сtrl+enter и наблюдать меедленную загруку, которая отображается прелоадером.

vooparker 01.07.2008 21:19

2ramshteks:
для проектов собираемых с помощью Flex SDK
http://www.bit-101.com/blog/?p=946

Gaen 01.07.2008 22:55

Решение от etc очень даже хорошее, просто в него нужно врубиться и тогда всё сразу станет логично, просто и понятно :)

ramshteks 01.07.2008 23:03

thanks)

ramshteks 03.07.2008 17:54

Цитата:

Сообщение от GAIKER (Сообщение 749351)
Решение от etc очень даже хорошее, просто в него нужно врубиться и тогда всё сразу станет логично, просто и понятно :)

ты оказался прав...) отличное решение, простое и локаничное )

Tfp 07.07.2008 16:26

вот тоже решыл сделать прелоадер правда когда игра жуе была почти полностью готова) почитал статью все чики пуки...вот только не пойму зачем заменять документ клас? весь етот код отлично добавляетья в первый кадр мувика, а в документ класе просто добавляем пару строк чтоб скрипт инициализации срабатывал в третьем кадре..
все свелось к такому коду в первом кадре
Код:

import flash.events.ProgressEvent;
import flash.events.Event;
loaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
loaderInfo.addEventListener(Event.COMPLETE, loadComplete);
Bar.scaleX = 0;
function loadProgress(e:ProgressEvent):void {
        var pct:Number = loaderInfo.bytesLoaded/loaderInfo.bytesTotal;
        Bar.scaleX = pct;
}
function loadComplete(e:Event):void {
        loaderInfo.removeEventListener(ProgressEvent.PROGRESS, loadProgress)
        loaderInfo.removeEventListener(Event.COMPLETE, loadComplete);
        play();
}

кода заметно меньше..ну и соответсвенно в третьем кадре stop(), а вод что добавил в док класе
Код:

                public function MainClass() {код заменяем листенером
                        addEventListener(Event.ENTER_FRAME,init);
                }
                public function init(evt) {
                        if (currentFrame==3) {а сюда пихаем изначальный код конструктора
removeEventListener(Event.ENTER_FRAME,init);}
                      }

и опять же зачем юзать
Код:

pBar = getChildByName("Bar") as Sprite;
если доступ к инстанции класса на стейдже доступен напряму через имя? а getChild необходим для динамически созданных обьектов, ну и если имя составное =)

ramshteks 07.07.2008 16:42

Цитата:

вот тоже решыл сделать прелоадер правда когда игра жуе была почти полностью готова) почитал статью все чики пуки...вот только не пойму зачем заменять документ клас? весь етот код отлично добавляетья в первый кадр мувика, а в документ класе просто добавляем пару строк чтоб скрипт инициализации срабатывал в третьем кадре..
вот таки чики пуки)
можно ваш код увидеть? проект не можете выложить?)


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

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