Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Глючит bytesTotal в прелоадере (http://www.flasher.ru/forum/showthread.php?t=127008)

Dos87 02.07.2009 16:32

Глючит bytesTotal в прелоадере
 
Есть стандартный прелоадер.
Вроде как всё работает, но не рассчитать процент загрузки, т.к. bytesTotal при предпросмотре работает норм, когда заливаю на сервак в EnternetExplorer'e показывает всё время 0, в FireFox'e всегда то же число, что и bytesLoaded. Следовательно процент или 100% или infinity%.
Вот код:
Код AS3:

package {
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import flash.display.StageScaleMode;
        import flash.display.StageAlign;
        import flash.text.TextField;
        import flash.text.TextFieldAutoSize;
        import flash.events.ProgressEvent;
        import flash.events.Event;
        import main.Main;
 
 
        public class ExportSecondFrame extends MovieClip {
                private var preloaderText:TextField = new TextField;
                private var progressBar:Sprite;
 
                public function ExportSecondFrame() {
                        super();
                        stop();
                        stage.showDefaultContextMenu = false;
                        stage.scaleMode = StageScaleMode.NO_SCALE;
                        stage.align = StageAlign.TOP_LEFT;
                        progressBar = getChildByName("pBar") as Sprite;
                        progressBar.scaleX = 0;
                        preloaderText.autoSize = TextFieldAutoSize.CENTER;
                        preloaderText.x = 303.5;
                        preloaderText.y = 310;
                        addChild(preloaderText);
                        loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
                        loaderInfo.addEventListener(Event.COMPLETE, completeHandler);
 
                }
 
                private function progressHandler(e:ProgressEvent):void {
                        progressBar.scaleX = e.bytesLoaded/e.bytesTotal;
                        preloaderText.text = e.bytesLoaded.toString() + " из " + e.bytesTotal.toString() + "  (" + (e.bytesLoaded/e.bytesTotal)*100 + "%)";
                }
 
                private function completeHandler(event:Event):void {
                        play();
                        addEventListener(Event.ENTER_FRAME, enterFrameHandler);
                }
 
                private function enterFrameHandler(event:Event):void {
                        if (currentFrame >= 3) {
                                gotoAndStop(2);
                                removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
                                loaderInfo.removeEventListener(Event.COMPLETE, completeHandler);
                                loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
                                preloaderText = null;
                                main();
                        }
                }
 
                private function main():void {
                        var programClass:Class = loaderInfo.applicationDomain.getDefinition("main.Main") as Class;
                        var program:MovieClip = new programClass() as MovieClip;
                        addChild(program);
                }
        }
}

Плиз хелп!

Dimonte 02.07.2009 17:22

У вас прелоадер, как я понимаю, грузит саму флешку? Если да, то вам нужен stage.loaderInfo. Кроме того, вместо хендлеров на ProgressEvent, можно повесить на ENTER_FRAME обработчик прогресс бара с обращением stage.loaderInfo.bytesLoaded / stage.loaderInfo.bytesTotal.

Dos87 02.07.2009 18:17

Да, прелоадер грузит всю флешку.
При использовании stage.loaderInfo, не срабатывает ни один хендлер.
Так же попробовал PROGRESS и COMPLETE заменить ENTER_FRAME - получается то же самое. В IE bytesTotal=0 в FireFox bytesTotal=bytesLoaded. Причем bytesLoaded работает стабильно.
Перепробовал уже всё, что знал =((

Добавлено через 6 минут
Вот ссылка:
http://empirepromoting.ru/test/bitmap/Main.html

Felicast 02.07.2009 23:02

цвет аццкий:)
возможно сервак не отдает размер файла. вот вывод firebug:
Код:

Server nginx/0.6.31
Date        Thu, 02 Jul 2009 17:59:49 GMT
Content-Type        application/x-shockwave-flash
Transfer-Encoding        chunked
Connection        keep-alive
Keep-Alive        timeout=20
Last-Modified        Thu, 02 Jul 2009 13:22:35 GMT
Etag        "10f8080-10ca32-eed21cc0"
Accept-Ranges        bytes
Vary        Accept-Encoding,User-Agent
Content-Encoding        gzip

как видно размера файла не приходит

CEBEP 02.07.2009 23:34

Кстати у меня тоже самое, как раз хотел тему создать либо 0 либо 100% сразу

Dos87 03.07.2009 00:09

Ну, цвет, эт йа так просто поставил. Это у меня кусок игры. Для Вконтакта пишу.

Спс за ответ.

iNils 03.07.2009 00:29

Цитата:

Сообщение от Dos87 (Сообщение 832807)
...йа...

Первое предупреждение за сленг.

Mur4ik 03.07.2009 03:27

Если с сервером проблемы, пропишите bytesTotal в ручную...
Вы ведь знаете сколько весит то что Вы грузите?

Dos87 03.07.2009 15:05

Думаю на Вконтактовском серваке должно заработать, если нет - придётся прописывать вручную...

vscapital 29.07.2009 19:30

Никто не придумал как решить эту проблему без ручного прописывания размера ??? Ведь даже если вручную прописывать то уже на перед не знаешь сколько будет весить файл ... Как обойти эту проблему???:wacko:


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

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