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

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

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

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Question Предзагрузчик. Нужно организовать загрузчик для самого swf файла

Есть файл игры, в нем хранится основная графика (вид боевой техники и т.п.), файл весит около 2 мегабайт. Вся дополнительная графика (такая как деревья, вода, трава и т.п.) подгружается отдельно, и для этого организованы предзагрузчики.
Но вопрос вот в чем, а как можно организовать загрузчик для самого swf файла?
Иначе те, у кого медленный инет могут подумать, что вообще ничего не грузится


Последний раз редактировалось goodguy; 28.11.2010 в 11:22.
Старый 28.11.2010, 11:16
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 2  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Если приложение в разработке - можно сделать внутренний прелоадер.
Это тут было.

Если приложение уже собрано - можно сделать внешний прелоадер. Рассматриваете основной файл приложения просто как мувик и грузите его. Когда он загрузился - кидаете его на сцену и все.

Старый 28.11.2010, 11:22
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 3  
Ответить с цитированием
goodguy
Banned

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
Если приложение в разработке - можно сделать внутренний прелоадер.
Это тут было.
Вот этого не понял. Можно по-подробнее?
Что мне даст внутренний прелодер? Я то сам знаю, что все грузится. А для дополнительной графики внутренние прелодеры уже есть

Старый 28.11.2010, 12:16
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 4  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Один из спсособов:
- Скачать FlashDevelop (даже если не в нем разрабатываете)
- Запустить
- Проект -> Новый -> создать проект "AS 3 с прелоадером"
- Посмотреть как оно это сделано

Старый 28.11.2010, 12:31
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 5  
Ответить с цитированием
goodguy
Banned

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Да как делается сам прелодер я знаю. Или может я не совсем понял здесь.

Т.е. нужно создать один небольшой файл, который будет быстро загружаться сам, а потом тянуть файл игры с сервера?

ФлешДевелоп создает такой класс прелодера:
Код AS3:
package 
{
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.ProgressEvent;
	import flash.utils.getDefinitionByName;
 
	public class Preloader extends MovieClip 
	{
 
		public function Preloader() 
		{
			addEventListener(Event.ENTER_FRAME, checkFrame);
			loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
			// show loader
		}
 
		private function progress(e:ProgressEvent):void 
		{
			trace(e.bytesLoaded / 1024);
		}
 
		private function checkFrame(e:Event):void 
		{
			if (currentFrame == totalFrames) 
			{
				removeEventListener(Event.ENTER_FRAME, checkFrame);
				startup();
			}
		}
 
		private function startup():void 
		{
			// hide loader
			stop();
			loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress);
			var mainClass:Class = getDefinitionByName("FunnyWar") as Class;
			addChild(new mainClass() as DisplayObject);
		}
	}
}
Добавил туда главный класс своей игры. Всё работает, но опять же, только после того, как сам файл игры уже загрузился

Старый 28.11.2010, 14:33
romsvm вне форума Посмотреть профиль Отправить личное сообщение для romsvm Найти все сообщения от romsvm
  № 6  
Ответить с цитированием
romsvm

Регистрация: Jun 2010
Сообщений: 3
а в классе FunnyWar есть такая строчка перед объявлением класса?
Код AS3:
[Frame(factoryClass="Preloader")]
более подробно тут можно почитать


Последний раз редактировалось iNils; 28.11.2010 в 14:38.
Старый 28.11.2010, 15:53
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 7  
Ответить с цитированием
goodguy
Banned

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
Сообщение от romsvm Посмотреть сообщение
а в классе FunnyWar есть такая строчка перед объявлением класса?
Код AS3:
[Frame(factoryClass="Preloader")]
более подробно тут можно почитать
Изначально не было.
Почитал эту статью, сделал загрузчик как там описано:
Код AS3:
package
{
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.utils.getDefinitionByName;
 
	public class FDPreloader extends MovieClip
	{
		public function FDPreloader()
		{
			stop();
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			addEventListener(Event.ENTER_FRAME, enterFrame);
		}
 
			public function enterFrame(event:Event):void
			{
				trace(totalFrames);
				if(framesLoaded == totalFrames)
				{
					removeEventListener(Event.ENTER_FRAME, enterFrame);
					nextFrame();
					init();
				}
				else
				{
					var percent:Number = root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal;
				}
			}
			private function init():void
			{
				var mainClass:Class = Class(getDefinitionByName("FunnyWar"));
				if(mainClass)
				{
					var app:Object = new mainClass();
					addChild(app as DisplayObject);
				}
			}
		}
	}
В классе FunnyWar тоже добавил строчку:
Код AS3:
[Frame(factoryClass="FDPreloader")]
public function FunnyWar():void 
{
	if (stage) initialize();
	else this.addEventListener(Event.ADDED_TO_STAGE, initialize, false, 0, true);		
}
Результат: 0.
В статье написано, что тег Frame вынуждает компилятор создать 2 кадра, в персом работает загрузчик, во втором, начинает грузиться отстальное. Как можно заметить, в коде я добавил строчку:
Код AS3:
trace(totalFrames);
Если верить этой статье, то кадров должно быть уже 2, но трейс выдает 1.
В чем подвох?

Цитата:
Давно не компилил во Флэше, но вроде там надо галочку "грузить в первый кадр" снять со всех объектов в библиотеке (кроме тех что относятся к прелоадеру конечно).
Убрал. Напрочь убивает приложение.

Цитата:
Угу, а потом во 2 кадр положить все эти объекты. Инициализировать всё в 3. Ужас. короче )
У меня в кадрах вообще ничего не инициализируется

Старый 28.11.2010, 14:47
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 8  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Аха. Frame factory и прелоадер готов за 2 минуты.

Старый 28.11.2010, 14:52
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 9  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Давно не компилил во Флэше, но вроде там надо галочку "грузить в первый кадр" снять со всех объектов в библиотеке (кроме тех что относятся к прелоадеру конечно).
__________________
Reality.getBounds(this);

Старый 28.11.2010, 15:01
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 10  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Угу, а потом во 2 кадр положить все эти объекты. Инициализировать всё в 3. Ужас. короче )

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

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

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


 


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


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