Форум 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=190211)

skolm 22.12.2012 01:59

Не получается посмотреть работу прелоадера
 
Здравствуйте.

Сделал обычную графическую полоску,преобразовал в мувиклип,задал ей имя Preload и экспортировал для as3.

Далее залил картинку и так же экспортировал с именем экземпляра Kartinka,преследуя 2-е цели:
1)Увеличить размер файла который хотелось бы загрузить
2)Увидеть что произошло после загрузки.

Получаю файл размером 30.7 кб. Имитирую загрузку со скоростью 4 кб/с .

Результат.На экране прелоад - полоска не появляется,но по истечению ~ 7 секунд,Kartinka появляется.

Вопрос что необходимо сделать что бы увидеть работу прелоадера?

Привожу код:
Код AS3:

package
{
        import flash.display.*;
        import flash.events.*;
 
        public class GT extends MovieClip
        {
                public var preload:Preload = new Preload();
                public var kartinka:Kartinka = new Kartinka();
                public function GameTowers():void
                {
                        preload.x = 350;
                        preload.y = 150;
                        addChild(preload);
                        addEventListener(Event.ADDED_TO_STAGE,init);
                }
                private function init(event:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE,init);
                        loaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress);       
                        loaderInfo.addEventListener(Event.COMPLETE,onComplite);
 
                }
                public function onComplite(e:Event):void
                {
                        if((loaderInfo.bytesLoaded) == (loaderInfo.bytesTotal))
                        {
                                removeChild(preload);
                                addChild(kartinka);
                        }
                }
                public function onProgress(e:ProgressEvent):void
                {
                        preload.scaleX = loaderInfo.bytesLoaded/loaderInfo.bytesTotal;
 
                }
        }
}

Спасибо.

elder_Nosferatu 22.12.2012 04:08

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

Есть два варианта решения проблемы:
- использовать внешний прелоадер;
- в первом кадре сделать прелоадер.

Второй вариант - это то, что вы пытаетесь сделать. Во первых, не надо импортировать ресурсы в первый кадр (в диалоге импорта есть соответствующая галочка), во вторых - никаких обращений к ресурсам, пока ролик полностью не загрузится.
Все что надо сделать, это разбыть старт ролика на два этапа - загрузка и собственно начало работы.
Во время загрузки останавливаете ролик на первом кадре, слушаете ProgressEvent (попутно отображая процесс загрузки) и ждете финала. При наступлении Event.COMPLETE переключаете ролик на второй кадр и начинаете работу своего приложения.

skolm 22.12.2012 16:01

Спасибо,ошибку понял,а как использовать gotoAndStop() и gotoAndPlay() в классах? или goto использовать в кадрах?

elder_Nosferatu 22.12.2012 16:16

Вообще то описаный мною вариант подходит для написания кода в кадрах, но это плохая практика... Если у вас хватит мужества отказаться от FlashIDE, тогда советую перейти на бесплатный FlashDevelop. При создании нового проекта можна выбрать шаблон "AS3 Project with Preloader", в котором будет сгенерирован код, повторяющий вышеописаную идею, только без всяких "кодов_на_кадрах". А FlashIDE будете использовать только для создания библиотек ресурсов (swc, swf).

skolm 22.12.2012 16:28

Понял,дело в том что у меня flash на русском,а flashdevelop ,на русском не могу найти =(

elder_Nosferatu 22.12.2012 19:05

Вам и не надо! Код писать и так ясно где, компилировать наверное тоже научились. Для начала вполне достаточно. А с остальным по ходу разберетесь. А если есть вопросы, так на нашем форуме тьма почитателей FlashDevelop`а - подскажут что надо.


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

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