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

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

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

Регистрация: Jul 2008
Сообщений: 912
По умолчанию loaderInfo, Embed и прогресс загрузки.

Можно ли как-то отследить загрузку флешки самой себя? Есть класс со встроенными изображениями и и класс документ класс.
Код AS3:
package resources{
 
	public class Store{
		[Embed(source = "../../store/menu/2011-11-22 17.15.35.jpg")] static private const img01:Class;
		[Embed(source = "../../store/menu/2011-11-22 19.30.37.jpg")] static private const img02:Class;
		[Embed(source = "../../store/menu/2011-12-19 13.30.21.jpg")] static private const img03:Class; 
		[Embed(source = "../../store/menu/2012-02-04 15.58.52.jpg")] static private const img04:Class;
		[Embed(source = "../../store/menu/2012-02-24 17.26.25.jpg")] static private const img05:Class;
		[Embed(source = "../../store/menu/2012-03-05 11.01.04.jpg")] static private const img06:Class;
		[Embed(source = "../../store/menu/2012-03-25 16.11.18.jpg")] static private const img07:Class;
 
		public function Store() {
 
		}
	}
}
Код AS3:
package {
	import flash.display.LoaderInfo;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.ProgressEvent;
	import resources.Store;
 
	public class MainClass extends Sprite {
 
		public function MainClass() {
			super();
			addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(_event:Event = null):void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
 
			var store:Store = new Store();
			loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressListener);
		}
 
		private function progressListener(_event:ProgressEvent):void {
			trace(_event.bytesLoaded);
		}
	}
}
Добавлено через 20 минут
То что предлагает FD не хочется использовать
Код AS3:
[Frame(factoryClass="Preloader")]
Добавлено через 48 минут
А если сделать так как у меня, то trace(_event.bytesLoaded); показывает что загрузка уже произошла.

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

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Стандартный класс из fd от проекта as3 project with preloader прекрасно работает.
Только прогресс загрузки нужно отлавливать в классе прелоадера, а не в 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.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);
 
		}
 
		private function progress(e:ProgressEvent):void {
			trace(e.bytesLoaded / e.bytesTotal);
		}
 
		private function checkFrame(e:Event):void {
			if (currentFrame == totalFrames) {
				stop();
				removeEventListener(Event.ENTER_FRAME, checkFrame);
				loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress);
				var mainClass:Class = getDefinitionByName("Main") as Class;
				addChild(new mainClass() as DisplayObject);
			}
		}
 
	}
}
Код AS3:
package {
 
	import flash.display.Sprite;
	import flash.events.Event;
 
	[Frame(factoryClass="Preloader")]
	public class Main extends Sprite {
 
		public function Main():void {
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// точка входа в программу тут
		}
 
	}
 
}

Старый 06.11.2012, 01:49
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 3  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Да понимаю, что нормально работает, но какая-то конструкция, такая... не нравится, неужели в самой себе нельзя прослушать?

Старый 06.11.2012, 02:10
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 4  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Тогда наверное только так. Но вам придётся пользовать mxml.

Старый 06.11.2012, 02:35
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 5  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Видимо прийдётся послушать FlashDevelop и не выдумывать...

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

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

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


 


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


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