Форум 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:

Felicast 30.07.2009 00:44

самый правильный способ: настроить веб-сервер, чтобы он отдавал размер.

vscapital 30.07.2009 12:29

А если я ни малейшего доступа к серверу не имею?

kackbip 30.07.2009 12:37

Уже писали.
Нужно чтобы серверном ответе присутствовал заголовок Content-Length с размером выдаваемого файла.

сорри, не посмотрел, что здесь 2 страницы. Повторился... Короче капаешь на мозг заказчику о том, что сервер кривой - пусть добавят в ответ заголовок Content-Length

WRC_S 10.08.2009 10:41

У меня тоже таже проблема, как я почитал топик все проблемы сводятся к серверу? А может ченить другое быть?

kackbip 10.08.2009 11:10

Так вы бы проверили для начала сервер. Поставьте себе какой-нибудь http снифер типа HTTPAnalyzer и поглядите есть ли заголовок Content-Length в ответе сервера

WRC_S 10.08.2009 11:49

Всё проверил, проблема в серваке, добавил ручками всё пашет! Правдо всё это неудобно чёть изменил надо лезть в прилойдер и менять его(

__ant 10.08.2009 12:18

Была такая же проблема. Админ на хостинге решил, убрав gzip.

Eric Gurt 02.02.2010 02:33

Цитата:

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

Значение переменной, в которой указан размер флэшки тоже влияет на размер. И как бы не получилось на байт больше или на байт меньше. Меньше - может не догрузится какой-либо объект и исчезнет, к примеру 1 текстовое поле (встречался с таким), больше - и загрузка никогда не закончится.

dimarik 02.02.2010 14:04

Цитата:

Сообщение от Eric Gurt (Сообщение 883512)
Значение переменной, в которой указан размер флэшки тоже влияет на размер

Вот это место мне больше всего понравилось:

Цитата:

исчезнет, к примеру 1 текстовое поле (встречался с таким)
Автор, напишите еще, пожалуйста. Ваши посты читаются на одном дыхании.

ramshteks 14.06.2012 22:24

ну как совсем плохой вариант написать скрипт на пхп\питоне\перле(хоть на бейсике:D) скрипт который вернет реальный размер файла

Punk T-34 14.06.2012 22:33

Решение, хоть и с опозданием на 3 года, здесь: http://patrickmcd.com/2009/04/20/fla...turn-off-gzip/
:)
Оказывается у многих людей такая проблема. В том числе и мне такой хостинг попался.

Eric Gurt 21.06.2012 20:53

С пробуждением тебя, 2 года как заброшенная тема:D
Лично я для проверки на полную загруженность сверяю количество загруженных кадров и кадров всего, а для отображения процентов делаю попытку запросить размер в байтах. Если он 0 то подставляю приблизительное значение, которое при каждом пробном запуске вывожу в trace и при публикации обновляю в переменной. Не лучший вариант, не особо напряжно, и точности при размере проекта в 8-10 мб достаточно.

Profdesigner 19.08.2013 01:44

Тоже присоединяюсь... Ищу данную проблему! Ответьте пож-та кто решил проблематику.

Akopalipsis 19.08.2013 02:08

я подсмотрел идею вот здесь http://flashpress.ru/blog/resource-loader/
Решения там конечно нет, но идея сразу устраняет все проблемы с размерами загружаемого.

Profdesigner 19.08.2013 02:31

Спасибо за ссылку, но не стал мудрить, т.к размер ролика постоянен и если будет меняться в будущем, то только в ручную. Там уж и поправить первый файл можно. Поэтому прописал bitesTotal вручную.
Спасибо за быстрый отклик!


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

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