Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   AS3 Preloader vs IE (http://www.flasher.ru/forum/showthread.php?t=127442)

ekeeper 14.07.2009 09:48

AS3 Preloader vs IE
 
Есть уже готовый проект который надо подправить.

В нем прелоадер сделан отдельной сценой.
То есть есть 2 сцены (по одному кадру) под именами Preloader и Game
сначала играется первая, и как вся флэшка загрузилась - играется вторая

Проблема в том, что во всех браузерах кроме IE все работает хорошо, а в IE прелоадер проскакивается.


Все экспортиться во 2й фрэйм то есть в первый кадр второй сцены получается.
Выдержка из сайз репорта:
Код:

Frame #    Frame Bytes    Total Bytes    Scene
-------    -----------    -----------    ----------------
      1          14429          14429    Preloader
      2        1231454        1245883    Game (AS 3.0 Classes Export Frame)

вот код конструктора для главного класса Main и остальных методов для прелоадера:

Код AS3:

                public function Main() {
                        super();
                        stop();
 
                        Security.allowDomain("*");
 
                        stage.showDefaultContextMenu = false;
                        stage.scaleMode = flash.display.StageScaleMode.NO_SCALE;
 
                        progressBar = getChildByName("ProgressBarMC") as Sprite;
                        progressBar.scaleX = 0;
 
                        addEventListener(Event.ENTER_FRAME, Update);
 
                        loaderInfo.addEventListener(Event.COMPLETE , loadingComplite);
                        loaderInfo.addEventListener(ProgressEvent.PROGRESS, loaderUpdate);
                }
 
                public function loadingComplite(e:Event):void{
                        if (gameLoaded == true)
                                return;
                    gotoAndStop(1, "Game");
                        Init();
                }                       
 
                public function loaderUpdate(e:ProgressEvent):void{
                    var percent:Number = Math.floor( (e.bytesLoaded*100)/e.bytesTotal );
                        progressBar.scaleX = percent/100;
                    if(percent == 100)
                        {
                        gotoAndStop(1, "Game");
                                Init();
                        }
                }

Все прекрасно работает во всех браузерах кроме IE
запуская на локалке отдельно swf - тоже все работает.

Когда дебажил, понял, что в IE флэшка грузится сразу целиком, а потом уже показывает прелоадер. То есть прелоадер проскакивается и строки

Код AS3:

                        loaderInfo.addEventListener(Event.COMPLETE , loadingComplite);
                        loaderInfo.addEventListener(ProgressEvent.PROGRESS, loaderUpdate);

не функционируют, так как уже все загружено. И так как событие Event.COMPLETE уже состоялось, функция перехода в сцену игры - не срабатывает - то есть на экране висит один прелоадер.

Как это исправить?
Делал даже отдельным классом, в одной сцене, по одной всем известной статье :)))
Опять же все работает везде, кроме как в IE :(

SunShadow 14.07.2009 11:14

А какая версия IE? Под 8 у меня многое работает не так как хочется. Под остальными вроде все нормально было

Smrad 14.07.2009 11:17

Поможет что-то в духе.
Код AS3:

    // этот if сработает только в IE и если тестить локально
    if (m_loaderInfo.bytesLoaded == m_loaderInfo.bytesTotal)
    {
        onLoadComplete(null);
    }
    else
    {
        m_loaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadProgress);
        m_loaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
    }


Alex Lexcuk 14.07.2009 11:37

Ниче не моможет.
Надо встроить флешку в html, тогда будет прелоадер в IE

Smrad 14.07.2009 12:21

Цитата:

Сообщение от Alex Lexcuk (Сообщение 835267)
Ниче не моможет.
Надо встроить флешку в html, тогда будет прелоадер в IE

Поможет ;).

ekeeper 14.07.2009 12:32

Цитата:

Сообщение от Smrad (Сообщение 835264)
Поможет что-то в духе.
Код AS3:

    // этот if сработает только в IE и если тестить локально
    if (m_loaderInfo.bytesLoaded == m_loaderInfo.bytesTotal)
    {
        onLoadComplete(null);
    }
    else
    {
        m_loaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadProgress);
        m_loaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
    }


да, я так сам сделал, просто забыл в теме упомянуть
это решает только пол проблемы - на локалке-то пашет, а в сети прелоадер все равно проскакивается - белый экран а потом сразу игра

Добавлено через 2 минуты
Цитата:

Сообщение от Alex Lexcuk (Сообщение 835267)
Ниче не моможет.
Надо встроить флешку в html, тогда будет прелоадер в IE

при компиляции генерил не только swf но и html - запускал как раз html в IE - не работало

Добавлено через 3 минуты
Цитата:

Сообщение от SunShadow (Сообщение 835262)
А какая версия IE? Под 8 у меня многое работает не так как хочется. Под остальными вроде все нормально было

У меня 8ка, у друга 6ка - не работает ни у него ни у меня
сам Flash Player - свежескаченный

SunShadow 14.07.2009 12:44

Может тогда исходники положите глянуть?

Alex Lexcuk 14.07.2009 12:52

при компиляции генерил не только swf но и html - запускал как раз html в IE - не работало
Как это вы прелодер тестили локально через ИЕ запуская html?
Это ж... нереально. Он локально грузит с обезбашенной скоростью, Потом еще к тому-же кеширует флешки, просто афигенно. Что-б затестить прелодер на локальном компьютере в ИЕ надо Сервер Apache с плугинчиком тормозящим загрузку. Я в ИЕ ниче не настраиваю, что-бы кеш сбросился -его надо закрыть, а потом открыть (ИЕ). И зугружать html с флешкой (встроенный прелодер) с виртуального сервера с ограничением скорости сервера, тогда прелоадер будет видно, прикол в мозиле: если во время загрузки нажать на крестик, останавливающий загрузку, внутренний прелоадер остановится и флешка загрузится неполностью, в ИЕ такого нет.

ekeeper 14.07.2009 13:08

Цитата:

Сообщение от Alex Lexcuk (Сообщение 835292)
при компиляции генерил не только swf но и html - запускал как раз html в IE - не работало
Как это вы прелодер тестили локально через ИЕ запуская html?
Это ж... нереально. Он локально грузит с обезбашенной скоростью, Потом еще к тому-же кеширует флешки, просто афигенно. Что-б затестить прелодер на локальном компьютере в ИЕ надо Сервер Apache с плугинчиком тормозящим загрузку. Я в ИЕ ниче не настраиваю, что-бы кеш сбросился -его надо закрыть, а потом открыть (ИЕ). И зугружать html с флешкой (встроенный прелодер) с виртуального сервера с ограничением скорости сервера, тогда прелоадер будет видно, прикол в мозиле: если во время загрузки нажать на крестик, останавливающий загрузку, внутренний прелоадер остановится и флешка загрузится неполностью, в ИЕ такого нет.

Я в инет на FTP заливал :)))
Значит от способа вставки swf в html зависит это?

Добавлено через 49 секунд
Цитата:

Сообщение от SunShadow (Сообщение 835290)
Может тогда исходники положите глянуть?

Вечером выложу

dimarik 14.07.2009 13:16

Цитата:

Значит от способа вставки зависит это?
не зависит.


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

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