首先..由於AS工程沒有幀..所以不能用常用的方法來做Loading..
這裏介紹的方法使用元標籤Frame(應該是元標籤吧?還是叫元數據標籤)
網上對Frame的介紹是...使用指定的類替換文檔類...
並把其它的東西都丟到了該類的第二幀...
概念就不多說了...英文好的可以看看這個文章...http://www.bit-101.com/blog/?p=946
先看看效果..(PS...Load完以後有CD的**喔...~~xixi);
放代碼
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)