Тема: ProgressEvent
Показать сообщение отдельно
Старый 30.05.2011, 05:45
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 3  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Судя по всему мейн из флешДевелопа, так кто же помешал создать проект с прелоаедером? Там уже люди подумали за вас.

И матерился бы поменьше, выхватишь пару плюсов. Звездочки вопроса не решают
Код AS3:
package  
{
	import flash.display.Sprite;
	import flash.events.ProgressEvent;
	import flash.events.Event;
 
        /** 
         * вот эта штука вставляет класс с именем Preloader
         * в кадр который следует перед мейном
         */
        [Frame(factoryClass="Preloader")] 
	public class Main extends Sprite 
	{
		[Embed(source = '../bin/DSC_5350.JPG')] private var oh1:Class;
		[Embed(source = '../bin/DSC_5350.JPG')] private var oh2:Class;
		[Embed(source = '../bin/DSC_5350.JPG')] private var oh3:Class;
		[Embed(source = '../bin/DSC_5350.JPG')] private var oh4:Class;
		[Embed(source = '../bin/DSC_5350.JPG')] private var oh5:Class;
 
		private var total	:Number = 0;
		private var load	:Number = 0;
 
		public function Main() 
		{
			var spr1:Sprite = new Sprite();
			var spr2:Sprite = new Sprite();
			var spr3:Sprite = new Sprite();
			var spr4:Sprite = new Sprite();
			var spr5:Sprite = new Sprite();
 
			spr1.addChild(new oh1());
			spr2.addChild(new oh2());
			spr3.addChild(new oh3());
			spr4.addChild(new oh4());
			spr5.addChild(new oh5());
 
			addChild(spr1);
			addChild(spr2);
			addChild(spr3);
			addChild(spr4);
			addChild(spr5);
 
                        //Убираем листенеры отсюда
		}
 
	}
}
А вот собственно и сам прелоадер, Всё вот эти вот прогресс ивенты тут.
Код 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.MouseEvent;
	import flash.events.ProgressEvent;
	import flash.text.TextField;
	import flash.utils.getDefinitionByName;
 
	/**
	 * ...
	 * @author Dukobpa3
	 */
	public class Preloader extends MovieClip 
	{
 
		private var tf:TextField = new TextField();
 
		private var pourc:int = 0;
 
		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);
 
			stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
 
			this.addChild(tf);
 
		}
 
		private function onMouseMove(e:MouseEvent):void 
		{
			tf.x = mouseX + 20;
			tf.y = mouseY;
		}
 
		private function ioError(e:IOErrorEvent):void 
		{
			trace(e.text);
		}
 
		private function progress(e:ProgressEvent):void 
		{
			// TODO update loader
 
			pourc = e.bytesLoaded / e.bytesTotal * 100;
 
			tf.text = pourc.toString(10);
		}
 
		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);
 
			startup();
		}
 
		private function startup():void 
		{
			this.removeChild(tf);
 
			//this.stage.addChild(new FlashPreloadProfiler());
 
			var mainClass:Class = getDefinitionByName("MVCMain") as Class;
			addChild(new mainClass() as DisplayObject);
 
		}
 
	}
 
}
__________________
Кто к нам с чем для чего - тот у нас того от того.