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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.11.2011, 21:10
ЗлОй ПрОграММер вне форума Посмотреть профиль Отправить личное сообщение для ЗлОй ПрОграММер Найти все сообщения от ЗлОй ПрОграММер
  № 1  
Ответить с цитированием
ЗлОй ПрОграММер

Регистрация: Nov 2010
Сообщений: 434
По умолчанию Правильно ли я сделал прелоадер

Есть приложение в нём несколько классов включая класс preloader и startApp(запустить приложение)
в классе preloader добавляю слушатели
Код AS3:
loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
затем
Код AS3:
private function progress(e: ProgressEvent): void 
{
//----------------------------------------------------------------------
	if (e.bytesLoaded == e.bytesTotal)
	{
		appLoaded = true;
		startApp();
		loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress);
		loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioError);
	}
//----------------------------------------------------------------------
}
правильно ли всё организованно ?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Нет.
что такое startApp(); ? Из Вашего текста явствует, что класс? Класс это не действие, класс это существительное. А здесь я вижу вызов какой-то функции.
__________________
Reality.getBounds(this);

Старый 03.11.2011, 21:29
ЗлОй ПрОграММер вне форума Посмотреть профиль Отправить личное сообщение для ЗлОй ПрОграММер Найти все сообщения от ЗлОй ПрОграММер
  № 3  
Ответить с цитированием
ЗлОй ПрОграММер

Регистрация: Nov 2010
Сообщений: 434
ну и как же быть ? делать прелоадер в отдельном swf или можно всё в одном swf уместить и прелоадер и само приложение ?

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

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

Старый 03.11.2011, 21:47
ЗлОй ПрОграММер вне форума Посмотреть профиль Отправить личное сообщение для ЗлОй ПрОграММер Найти все сообщения от ЗлОй ПрОграММер
  № 5  
Ответить с цитированием
ЗлОй ПрОграММер

Регистрация: Nov 2010
Сообщений: 434
так он родимый и есть)

Старый 03.11.2011, 21:50
carrotoff вне форума Посмотреть профиль Отправить личное сообщение для carrotoff Найти все сообщения от carrotoff
  № 6  
Ответить с цитированием
carrotoff
 
Аватар для carrotoff

Регистрация: May 2010
Сообщений: 543
Цитата:
так он родимый и есть)
Ну тогда выбирайте New Project -> AS3 Project with Preloader. Велосипед изобрели до вас
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с)

Старый 03.11.2011, 21:55
ЗлОй ПрОграММер вне форума Посмотреть профиль Отправить личное сообщение для ЗлОй ПрОграММер Найти все сообщения от ЗлОй ПрОграММер
  № 7  
Ответить с цитированием
ЗлОй ПрОграММер

Регистрация: Nov 2010
Сообщений: 434
Код AS3:
package 
{
 
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.events.ProgressEvent;
	import flash.utils.getDefinitionByName;
 
	/**
	 * ...
	 * @author 
	 */
	public class PreloaderClass extends MovieClip 
	{
 
		public function PreloaderClass() 
		{
		//----------------------------------------------------------------------
			if (stage) 
			{
				stage.scaleMode = StageScaleMode.NO_SCALE;
				stage.align = StageAlign.TOP_LEFT;
			}
		//----------------------------------------------------------------------
			addEventListener(Event.ENTER_FRAME, checkFrame);
			loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
			loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
		//----------------------------------------------------------------------	
			// TODO show loader
		//----------------------------------------------------------------------
		}
 
		private function ioError(e: IOErrorEvent): void 
		{
		//----------------------------------------------------------------------
			trace(e.text);
		//----------------------------------------------------------------------
		}
 
		private function progress(e: ProgressEvent): void 
		{
		//----------------------------------------------------------------------
			// TODO update loader
		//----------------------------------------------------------------------
		}
 
		private function checkFrame(e: Event): void 
		{
		//----------------------------------------------------------------------
			if (currentFrame == totalFrames) 
 
			{
				stop();
				loadingFinished();
			}
		//----------------------------------------------------------------------
		}
 
		private function loadingFinished(): void 
		{
		//----------------------------------------------------------------------
			removeEventListener(Event.ENTER_FRAME, checkFrame);
			loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress);
			loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioError);
		//----------------------------------------------------------------------	
			// TODO hide loader
		//----------------------------------------------------------------------	
			startUP();
		//----------------------------------------------------------------------
		}
 
		private function startUP(): void 
		{
		//----------------------------------------------------------------------
			var mainClass: Class = getDefinitionByName("MainClass") as Class;
			addChild(new mainClass() as MovieClip);
		//----------------------------------------------------------------------
		}
 
	}
 
}
чёт не пойму и чем же от моего отличается ?
Код AS3:
package app 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.display.Loader;
	import flash.events.MouseEvent;
	import flash.utils.ByteArray;
	import flash.events.IOErrorEvent;
	import flash.events.ProgressEvent;
	import flash.text.TextField;
 
	/**
	 * ...
	 * @author 
	 */
	public class cPreloader extends Sprite 
	{
 
		public var appLoaded: Boolean = false;
 
		public function cPreloader() 
		{
		//----------------------------------------------------------------------
			if (stage) Initialization()
			else addEventListener(Event.ADDED_TO_STAGE, Initialization);
		//----------------------------------------------------------------------
		}
 
		private function Initialization(e: Event = null): void 
		{
		//----------------------------------------------------------------------		
			loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
			loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
			removeEventListener(Event.ADDED_TO_STAGE, Initialization);
		//----------------------------------------------------------------------
		}
 
		private function progress(e: ProgressEvent): void 
		{
		//----------------------------------------------------------------------
			if (e.bytesLoaded == e.bytesTotal)
			{
				appLoaded = true;
				parentInstance.startApp();
				loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress);
				loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioError);
			}
		//----------------------------------------------------------------------
		}
 
		private function ioError(e: IOErrorEvent): void 
		{
		//----------------------------------------------------------------------
			//errorText.text = String(e);
		//----------------------------------------------------------------------
		}
 
 
 
	}
 
}
немного изменил а так тож самое


Последний раз редактировалось ЗлОй ПрОграММер; 03.11.2011 в 22:00.
Старый 03.11.2011, 23:01
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 8  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Каких Вы хотите ответов, если не отвечаете на вопросы? Я спросил Вас, что такое startApp()? Вместо ответа Вы добавили загадок - теперь у Вас есть parentInstance.startApp(); Причем что такое parentInstance, знаете только Вы, ибо такой переменной в коде класса нет. Как ответить Вам, чем Ваш код отличается от шаблона ФД? Методом дедукции (исключения) я могу заключить, что "отцовскийЭкземпляр" как-то связан с главным классом самого приложения (потому как больше этому классу в вашем коде прятаться негде). Поскольку переменной нет, видимо это класс, хоть и написан с маленькой буквы. В импорте он отсутствует, видимо по причине того что лежит в той же директории/находится в том же пакете. Если я прав, то отличие именно в этом. В прелоадере от ФД главный класс НИКАК не импортируется в класс прелоадера. Потому что в этом случае он притянет за собой ВЕСЬ остальной код и соотв. все используемые в swf-файле ресурсы. И прелоадер не будет добавлен на сцену, пока не загрузится ВСЯ флэшка. А после этого, как ВЫ понимаете, прелоадер никому уже не нужен. Должен прогрузиться первый кадр с прелоадером, все что нужно для показа этого кадра. Когда кадр прогрузится, плеер отобразит его и начнет грузить второй кадр, в котором как раз и находятся все классы и ресурсы приложения. В это время прелоадер уже "на сцене" и показывает прогресс загрузки. Видите разницу? Два кадра и разделение ресурсов по кадрам – вот чего нет у Вас, чтобы прелоадер стал ПРЕлоадером.
__________________
Reality.getBounds(this);

Старый 04.11.2011, 00:50
ЗлОй ПрОграММер вне форума Посмотреть профиль Отправить личное сообщение для ЗлОй ПрОграММер Найти все сообщения от ЗлОй ПрОграММер
  № 9  
Ответить с цитированием
ЗлОй ПрОграММер

Регистрация: Nov 2010
Сообщений: 434
startApp(запустить приложение). добавляет на сцену фон приложения ну и т.д.
а насчёт структуры
1. Есть главный экземпляр класса который создаёт 2 экземпляра классов (preloader и app) первый это прелоадер, а второй экземпляр приложения. и когда в прелоадере e.bytesLoaded == e.bytesTotal я через главный класс добавляю экземпляр класса app


Последний раз редактировалось ЗлОй ПрОграММер; 04.11.2011 в 00:53.
Старый 04.11.2011, 01:23
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 10  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Ага, вся флэшка в одном кадре явно.
Смотрите, как работает встроенный предзагрузчик:
Если у главного таймлайна более одного кадра, то плеер, когда загрузит первый кадр, начинает выполнять то, что в нём есть. Потому этот кадр используют для предзагрузчика. Который не покажется, пока не загрузится всё, что есть в первом кадре. Который ждёт, пока не загрузится всё и показывает всякое. Чтобы было более одного кадра "AS3 Project with Preloader" использует метатег [Frame] в классе MainClass. И чтобы в первом кадре не было этого MainClass, фона приложения и т.д. - используют getDefinitionByName. Потому что как только в каком-то кадре будет упомянуто имя класса не как строка (в getDefinitionByName) - то этот класс будет вкомпилен в этот кадр. Также будут вкомпилены все классы, которые упоминаются в этом классе не как строка и классы, которые упоминаются в тех классах итд.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

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

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

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


 


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


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