Показать сообщение отдельно
Старый 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);
			// точка входа в программу тут
		}
 
	}
 
}