Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 14.07.2009, 09:48
ekeeper вне форума Посмотреть профиль Отправить личное сообщение для ekeeper Найти все сообщения от ekeeper
  № 1  
Ответить с цитированием
ekeeper

Регистрация: May 2008
Сообщений: 102
По умолчанию 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

Создать новую тему   Часовой пояс GMT +4, время: 01:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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