AS工程中的Loading應用

今天又來介紹Loading...(-_-!!!...好像整天都介紹Loading..希望沒誤導各位...)

首先..由於AS工程沒有幀..所以不能用常用的方法來做Loading..

這裏介紹的方法使用元標籤Frame(應該是元標籤吧?還是叫元數據標籤)

網上對Frame的介紹是...使用指定的類替換文檔類...

並把其它的東西都丟到了該類的第二幀...

概念就不多說了...英文好的可以看看這個文章...http://www.bit-101.com/blog/?p=946

先看看效果..(PS...Load完以後有CD的**喔...~~xixi);

顯示/隱藏FLASH



放代碼
Preloader類
package
{
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.ProgressEvent;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.utils.getDefinitionByName;
	/**
	 * 加載類,由於原內容會放到此類的第二幀~所以需要使用MovieClip;
	 * @author L4cd.Net
	 */
	public class Preloader extends MovieClip
	{
		[Embed(source="l4cd_48_48.jpg")]
		private var LogoClass:Class;
		private var text:TextField;
		public function Preloader()
		{
			//不多說了
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.showDefaultContextMenu = false;
			//顯示一張圖片..非必要
			with(addChild(new LogoClass()))
			{
				x=(500-48)/2;
				y=(380-48)/2;
			}
			//加一個textField顯示進度
			text = addChild(new TextField()) as TextField;
			with(text)
			{
				defaultTextFormat = new TextFormat("宋體",12,0,null,null,null,null,null,"center");
				mouseEnabled = false;
				height = 16;
				x = (500-100)/2;
				y = 35+(380-15)/2;
			}
			//重要~偵聽~
			loaderInfo.addEventListener(ProgressEvent.PROGRESS,progress);
			loaderInfo.addEventListener(Event.COMPLETE,complete);
		}
		//顯示進度
		private function progress(e:ProgressEvent):void
		{
			text.text = (e.bytesLoaded/e.bytesTotal*100).toFixed(2)+"% Loaded";
		}
		private function complete(e:Event):void
		{
			//重要..加載完後...我們跳轉到第二幀
			gotoAndStop(2);
			//獲取文檔類...然後顯示,對於此步操作..有多種方法..有人習慣直接把原文檔類addChild到此類當中..
			var mainClass:Class = Class(getDefinitionByName("AsProjectLoadingExample"));
			stage.addChild(new mainClass() as DisplayObject);
			//刪除此類
			destroy();
		}
		private function destroy():void
		{
			loaderInfo.removeEventListener(ProgressEvent.PROGRESS,progress);
			loaderInfo.removeEventListener(Event.COMPLETE,complete);
			parent.removeChild(this);
		}
	}
}

AsProjectLoadingExample類
package {
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.geom.Matrix;

	[SWF(width="500",height="380",backgroundColor="#FFFFFF",frameRate="24")]
	//注意此行,Preloader爲類名
	[Frame(factoryClass="Preloader")]
	public class AsProjectLoadingExample extends Sprite
	{
		[Embed(source="CD**.png")]
		private var ImageClass:Class;
		//嵌入一個2M的文件以顯示加載效果
		[Embed(source="something.wma",mimeType="application/octet-stream")]
		private var SomeClass:Class;
		public function AsProjectLoadingExample()
		{
			//馬賽格ing...
			var bmp:Bitmap = new ImageClass();
			var bit:BitmapData = new BitmapData(bmp.width/10,bmp.height/10,true,0);
			bit.draw(bmp,new Matrix(.1,0,0,.1));
			with (addChild(new Bitmap(bit)))
			{
				scaleX = scaleY = 10;
			}
		}
	}
}


我們也可以先用Flash做好loading效果..然後再嵌入到AS工程裏..(下面的loading來自Pretty Loaded)

顯示/隱藏FLASH

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章