![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Banned
Регистрация: Dec 2012
Сообщений: 20
|
Здравствуйте.
Сделал обычную графическую полоску,преобразовал в мувиклип,задал ей имя Preload и экспортировал для as3. Далее залил картинку и так же экспортировал с именем экземпляра Kartinka,преследуя 2-е цели: 1)Увеличить размер файла который хотелось бы загрузить 2)Увидеть что произошло после загрузки. Получаю файл размером 30.7 кб. Имитирую загрузку со скоростью 4 кб/с . Результат.На экране прелоад - полоска не появляется,но по истечению ~ 7 секунд,Kartinka появляется. Вопрос что необходимо сделать что бы увидеть работу прелоадера? Привожу код: 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; } } } |
|
|||||
|
Вся беда в том, что код начинает исполняться лишь тогда, когда полностью загрузится первый кадр вашего ролика. А так как у вас все ресурсы создаются в первом кадре, то и код не исполняется до того, как все они не будут загружены.
Есть два варианта решения проблемы: - использовать внешний прелоадер; - в первом кадре сделать прелоадер. Второй вариант - это то, что вы пытаетесь сделать. Во первых, не надо импортировать ресурсы в первый кадр (в диалоге импорта есть соответствующая галочка), во вторых - никаких обращений к ресурсам, пока ролик полностью не загрузится. Все что надо сделать, это разбыть старт ролика на два этапа - загрузка и собственно начало работы. Во время загрузки останавливаете ролик на первом кадре, слушаете ProgressEvent (попутно отображая процесс загрузки) и ждете финала. При наступлении Event.COMPLETE переключаете ролик на второй кадр и начинаете работу своего приложения. |
|
|||||
|
Banned
Регистрация: Dec 2012
Сообщений: 20
|
Спасибо,ошибку понял,а как использовать gotoAndStop() и gotoAndPlay() в классах? или goto использовать в кадрах?
|
|
|||||
|
Вообще то описаный мною вариант подходит для написания кода в кадрах, но это плохая практика... Если у вас хватит мужества отказаться от FlashIDE, тогда советую перейти на бесплатный FlashDevelop. При создании нового проекта можна выбрать шаблон "AS3 Project with Preloader", в котором будет сгенерирован код, повторяющий вышеописаную идею, только без всяких "кодов_на_кадрах". А FlashIDE будете использовать только для создания библиотек ресурсов (swc, swf).
|
|
|||||
|
Banned
Регистрация: Dec 2012
Сообщений: 20
|
Понял,дело в том что у меня flash на русском,а flashdevelop ,на русском не могу найти =(
|
|
|||||
|
Вам и не надо! Код писать и так ясно где, компилировать наверное тоже научились. Для начала вполне достаточно. А с остальным по ходу разберетесь. А если есть вопросы, так на нашем форуме тьма почитателей FlashDevelop`а - подскажут что надо.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|