![]() |
|
||||||||||
|
|||||
package { import flash.display.Sprite; import flash.events.ProgressEvent; import flash.events.Event; public class Main extends Sprite { [Embed(source = '../bin/DSC_5350.JPG')] private var oh1:Class; [Embed(source = '../bin/DSC_5350.JPG')] private var oh2:Class; [Embed(source = '../bin/DSC_5350.JPG')] private var oh3:Class; [Embed(source = '../bin/DSC_5350.JPG')] private var oh4:Class; [Embed(source = '../bin/DSC_5350.JPG')] private var oh5:Class; private var total :Number = 0; private var load :Number = 0; public function Main() { var spr1:Sprite = new Sprite(); var spr2:Sprite = new Sprite(); var spr3:Sprite = new Sprite(); var spr4:Sprite = new Sprite(); var spr5:Sprite = new Sprite(); spr1.addChild(new oh1()); spr2.addChild(new oh2()); spr3.addChild(new oh3()); spr4.addChild(new oh4()); spr5.addChild(new oh5()); addChild(spr1); addChild(spr2); addChild(spr3); addChild(spr4); addChild(spr5); loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); loaderInfo.addEventListener(Event.COMPLETE, completeHandler); loaderInfo.addEventListener(Event.INIT, initHandler); } private function completeHandler(e:Event):void { trace("completeHandler"); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function enterFrameHandler(e:Event):void { if (load >= total) { trace("complete!"); removeEventListener(Event.ENTER_FRAME, enterFrameHandler); return; } } private function progressHandler(e:ProgressEvent):void { total = e.bytesTotal; load = e.bytesLoaded; trace("progressHandler: " + load + " / " + total); } private function initHandler(e:Event):void { trace("initHandler"); } } } /* trace ==> * * initHandler * progressHandler: 1969036 / 1969036 * completeHandler * complete! * **/ Луди, дайте понять, как запустить приложение и увидеть этот процесс загрузки. Читал мануал про астеройды в шапке форума не понял ни чего, нельзя описать где нить без КАДРОВ и ВРЕМЕННОЙ ШКАЛЫ? Уже аж раздражает что моя пустая голова не может вразумить элементарного. Видел флэшки 2-3 метра всё равно прогресс бар пробегает заметно не вооружённым глазом у меня же только после компиляции в трейс отпишет и сразу ролик запускает, и на серв скидывал, всё не так. Как мне отследить процесс загрузки самого ролика? Флекс и тот элементарный (пустой) стейдж прогрессирует что тоже заметно. Я даже пробовал создать 30 000 спрайтов 800х600, прогресса ни какого, сам плеер запускается только после того как полностью прогрузится. Ни фига не могу понять! Заранее, очень буду БЛАГОДАРЕН за помощь!
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! Последний раз редактировалось iNils; 30.05.2011 в 10:51. |
|
|||||
|
strange mood
|
Без кадров, к сожалению, не обойтись.
http://etcs.ru/blog/as1/export_in_se...ame_flash_cs3/
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Судя по всему мейн из флешДевелопа, так кто же помешал создать проект с прелоаедером? Там уже люди подумали за вас.
И матерился бы поменьше, выхватишь пару плюсов. Звездочки вопроса не решают ![]() package { import flash.display.Sprite; import flash.events.ProgressEvent; import flash.events.Event; /** * вот эта штука вставляет класс с именем Preloader * в кадр который следует перед мейном */ [Frame(factoryClass="Preloader")] public class Main extends Sprite { [Embed(source = '../bin/DSC_5350.JPG')] private var oh1:Class; [Embed(source = '../bin/DSC_5350.JPG')] private var oh2:Class; [Embed(source = '../bin/DSC_5350.JPG')] private var oh3:Class; [Embed(source = '../bin/DSC_5350.JPG')] private var oh4:Class; [Embed(source = '../bin/DSC_5350.JPG')] private var oh5:Class; private var total :Number = 0; private var load :Number = 0; public function Main() { var spr1:Sprite = new Sprite(); var spr2:Sprite = new Sprite(); var spr3:Sprite = new Sprite(); var spr4:Sprite = new Sprite(); var spr5:Sprite = new Sprite(); spr1.addChild(new oh1()); spr2.addChild(new oh2()); spr3.addChild(new oh3()); spr4.addChild(new oh4()); spr5.addChild(new oh5()); addChild(spr1); addChild(spr2); addChild(spr3); addChild(spr4); addChild(spr5); //Убираем листенеры отсюда } } } package { import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.MouseEvent; import flash.events.ProgressEvent; import flash.text.TextField; import flash.utils.getDefinitionByName; /** * ... * @author Dukobpa3 */ public class Preloader extends MovieClip { private var tf:TextField = new TextField(); private var pourc:int = 0; public function Preloader() { if (stage) { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; } addEventListener(Event.ENTER_FRAME, checkFrame); loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress); loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError); stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); this.addChild(tf); } private function onMouseMove(e:MouseEvent):void { tf.x = mouseX + 20; tf.y = mouseY; } private function ioError(e:IOErrorEvent):void { trace(e.text); } private function progress(e:ProgressEvent):void { // TODO update loader pourc = e.bytesLoaded / e.bytesTotal * 100; tf.text = pourc.toString(10); } private function checkFrame(e:Event):void { if (currentFrame == totalFrames) { stop(); loadingFinished(); } } private function loadingFinished():void { removeEventListener(Event.ENTER_FRAME, checkFrame); loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress); loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioError); startup(); } private function startup():void { this.removeChild(tf); //this.stage.addChild(new FlashPreloadProfiler()); var mainClass:Class = getDefinitionByName("MVCMain") as Class; addChild(new mainClass() as DisplayObject); } } }
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Спасибо народ, извините за звёздочки, просто не мог найти более менее нормального прелоадера. Ещё раз спасибо и за пример и за толкование.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! |
|
|||||
|
Здравствуйте, у меня аналогичная проблема с пониманием системы работы прелоадера. Возможно потомучто никогда не программировал в кадрах и не пойму как это работает. Пишу также на FD, но пример Dukobpa3 не запустился полноценно что вызвало вопросы:
Во-первых не отобразились загруженные картинки, хотя у курсора отображается "100". Во-вторых не понятна функция startup (маловато опыта программирования) в которой выдается ошибка "Не определена переменная "MVCMain", для меня загадка что это. В-третих, хотелось бы уточнить где будет продолжатся сама программа после завершения загрузки, логика подсказывает что в main'е. |
|
|||||
|
Цитата:
Цитата:
Цитата:
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
А если походу программы нужно будет вызвать еще один прелоадер, как это нужно обозначать в Main, и нужно ли писать еще один класс дляпрелоадера или можно какимто образом воспользоваться тем же самым.
|
|
|||||
|
Судя по всему действительно путаю, и тогда не помайму, в чем смысл и плюс прелоадера, если в основном классе можно сделать прогрессбар, хотя у топикстартера это не получилось.
|
|
|||||
|
Прелоадер загружается и выполняется первым, до того как загружены все ресурсы. В основном классе вы можете сделать прогрессбар, но код его выполнится только после того, как загрузится вся флешка и показывать будет уже нечего.
__________________
משיח לא בא משיח גם לא מטלפן |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:06. |
|
|
« Предыдущая тема | Следующая тема » |
|
|