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

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

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
По умолчанию Прелоадер - мгновенное появление.

Создаю pure AS3 проект. На выходе флэшка всего 450 кБ. Сначала делал вообще без прелоадера. Но при открытии в браузере флэшка появляется только на 4-5 секунде. Непонятно от чего это.
Решил добавить прелоадер. В флэшке из 450 кБ - 3/4 это ресурсы: графика (jpg, png, swf) и звуки (mp3).

Читаю здесь как правильно добавлять прелоадер.
Теперь у меня в корне проекта появляются три класса: Main, Preloader и App.
Почти все как в статье по ссылке (вторая часть где без Flash IDE) только добавил SWF которая отображает процесс загрузки цифрами. Вот сам класс Preloader.as

Код AS3:
package 
{
	import flash.display.BlendMode;
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.text.TextField;
	import flash.utils.getDefinitionByName;
	import flash.events.ProgressEvent;
 
	[SWF(width="500", height="700", frameRate="30")]
	public class Preloader extends MovieClip 
	{
		[Embed(source = 'lib/preloader.swf', symbol = 'progressbar')]
		private var progressBarClass:Class
		[Embed(source = 'lib/preloader.swf', symbol = 'percent')]
		private var percentDisplayClass:Class
 
		private var preloadGraphic:Sprite = new Sprite();
		private var progressBar:Sprite = new progressBarClass();
		private var percentDisplay:Sprite = new percentDisplayClass();
		private var percent:TextField;
		[Embed(source="images/afisha_4.png")]
		public var Afisha:Class;
		public function Preloader() 
		{
			addEventListener(Event.ENTER_FRAME, checkFrame);
			// show loader
			progressBar.scaleX = 0;
			preloadGraphic.addChild(progressBar);
			preloadGraphic.addChild(percentDisplay);
			preloadGraphic.y = stage.stageHeight / 2;
			percentDisplay.blendMode = BlendMode.INVERT;
			percentDisplay.x = stage.stageWidth / 2;
			percentDisplay.y = -4;
			percent = percentDisplay.getChildByName("percentDisplay") as TextField;
			addChild(preloadGraphic);
			loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
		}
 
		protected function progress(event:ProgressEvent):void
		{
			trace(event.bytesLoaded);
		}
 
		private function checkFrame(e:Event):void 
		{
			trace(e);
			if (currentFrame == totalFrames) 
			{
				removeEventListener(Event.ENTER_FRAME, checkFrame);
				startup();
			} else {
				var bytesLoaded:Number = this.loaderInfo.bytesLoaded;
				var bytesTotal:Number = this.loaderInfo.bytesTotal;
				percent.text = Math.ceil((100 * (bytesLoaded / bytesTotal))) + "%";
				progressBar.scaleX = (bytesLoaded / bytesTotal);
			}
		}
 
		private function startup():void 
		{
			removeChild(preloadGraphic);
			stop();
			var mainClass:Class = getDefinitionByName("Main") as Class;
			addChild(new mainClass() as DisplayObject);
		}
	}
}
В Main прописал [Frame(factoryClass="Preloader")]
Теперь при запуске прелоадер с 100% появляется на доли секунды и пропадает. Специально заэмбедил в проект png размером 27 Мб, но все равно грузится мгновенно. При этом первый трейс выдает 11447351, а второй вообще ничего (извиняюсь, не досмотрел - выводит [Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]).

Подскажите, как все правильно вставить прелоадер, чтобы он нормально отображал загрузку моих ресурсов?
Правильно ли что все ресурсы нужно добавлять так как я сделал с png или можно создать отдельный файл, а в прелоадере просто импортнуть: import myRes.Resourses;?


Последний раз редактировалось Astraport; 21.11.2011 в 16:12.
Создать новую тему   Часовой пояс GMT +4, время: 03:36.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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