AS項目自載Loading

在編譯入口類的頂上加一行

[Frame(factoryClass="Loading")]

Loading爲類名,這樣相當於插入了一幀

看個示例:

loading類:

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);
		}
	}
}
編譯入口類:
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;
			}
		}
	}
}
參考鏈接:http://blog.l4cd.net/post-old-140.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章