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

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

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

Регистрация: Mar 2015
Сообщений: 26
Flame Не могу сделать прелоадер

Здравствуйте, пытаюсь сделать внутренний прелоадер для уже готовой игры.
В конструкторе Main есть

Код AS3:
loaderInfo.addEventListener(ProgressEvent.PROGRESS, filling);
loaderInfo.addEventListener(Event.COMPLETE, filled);
проблема в том что в функции filling, в первом в нее заходе,
Код AS3:
var a:uint = event.bytesLoaded;
var b:uint = event.bytesTotal;
trace(a, b);
//a == b почему-то
Также если в любом другом месте программы написать
Код AS3:
trace(loaderInfo.bytesTotal);
число будет таким-же самым.
По идее он ведь должен загружать частями а не за раз. Может приложение слишком маленькое (900кб)?

Приложение работает нормально. Писал исключительно в классах, то есть не в кадрах.
Не понимаю. Может есть мысли на этот счет.
Спасибо.

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Если я правильно помню, то внутренний прелоадер будет корректно работать, если есть хотя бы несколько кадров.
Попробуйте воспользоваться шаблоном из FlashDevelop. Здесь программно создаётся первый кадр для прелоадера, и второй - для main класса.
В общем сам шаблон (лишнее конечно можете убрать):
Код 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;
 
 
	public class Preloader extends MovieClip 
	{
 
		public function Preloader() 
		{
			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
			trace(loaderInfo.bytesLoaded);
		}
 
		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("Main") as Class;
			addChild(new mainClass() as DisplayObject);
		}
 
	}
 
}
А ваш Main класс, нужно немного изменить, прописав "внедрение кадра"
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.ProgressEvent;
 
	[Frame(factoryClass="Preloader")] // <------------
	public class Main extends Sprite 
	{
 
		public function Main() 
		{
			// ваша игра
		}
 
	}
 
}
Важно: документ классом, по-прежнему нужно оставить Main класс, а не класс прелоадера.
Но 900 кб действительно мало, чтобы загружалось порциями.

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

Теги
AS3 , preloader
Опции темы
Опции просмотра

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

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


 


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


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