网站位置:首页 >> 相关文档
AS工程中Loading的应用
今天又来介绍Loading...(-_-!!!...好像整天都介绍Loading..希望没误导各位...)
首先..由于AS工程没有帧..所以不能用常用的方法来做Loading..这里介绍的方法使用元标签Frame(应该是元标签吧?还是叫元数据标签).
网上对Frame的介绍是...使用指定的类替换文档类...并把其它的东西都丢到了该类的第二帧...
概念就不多说了...英文好的可以看看这个文章... http://www.bit-101.com/blog/?p=946
先看看效果..(PS...Load完以后有CD的艳照喔...~~xixi);

放代码
Preloader类:
01.package
02.{
03.    import Flash.display.DisplayObject;
04.    import flash.display.MovieClip;
05.    import flash.display.StageScaleMode;
06.    import flash.events.Event;
07.    import flash.events.ProgressEvent;
08.    import flash.text.TextField;
09.    import flash.text.TextFormat;
10.    import flash.utils.getDefinitionByName;
11.    /**
12.     * 加载类,由于原内容会放到此类的第二帧~所以需要使用MovieClip;
13.     * @author L4cd.NET
14.     */
15.    public class Preloader extends MovieClip
16.    {
17.        [Embed(source="l4cd_48_48.jpg")]
18.        private var LOGOClass:Class;
19.        private var text:TextField;
20.        public function Preloader()
21.        {
22.            //不多说了
23.            stage.scaleMode = StageScaleMode.NO_SCALE;
24.            stage.showDefaultContextMenu = false;
25.            //显示一张图片..非必要
26.            with(addChild(new LogoClass()))
27.            {
28.                x=(500-48)/2;
29.                y=(380-48)/2;
30.            }
31.            //加一个textField显示进度
32.            text = addChild(new TextField()) as TextField;
33.            with(text)
34.            {
35.                defaultTextFormat = new TextFormat("宋体",12,0,null,null,null,null,null,"center");
36.                mouseEnabled = false;
37.                height = 16;
38.                x = (500-100)/2;
39.                y = 35+(380-15)/2;
40.            }
41.            //重要~侦听~
42.            loaderInfo.addEventListener(ProgressEvent.PROGRESS,progress);
43.            loaderInfo.addEventListener(Event.COMPLETE,complete);
44.        }
45.        //显示进度
46.        private function progress(e:ProgressEvent):void
47.        {
48.            text.text = (e.bytesLoaded/e.bytesTotal*100).toFixed(2)+"% Loaded";
49.        }
50.        private function complete(e:Event):void
51.        {
52.            //重要..加载完后...我们跳转到第二帧
53.            gotoAndStop(2);
54.            //获取文档类...然后显示,对于此步操作..有多种方法..有人习惯直接把原文档类addChild到此类当中..
55.            var mainClass:Class = Class(getDefinitionByName("ASProjectLoadingExample"));
56.            stage.addChild(new mainClass() as DisplayObject);
57.            //删除此类
58.            destroy();
59.        }
60.        private function destroy():void
61.        {
62.            loaderInfo.removeEventListener(ProgressEvent.PROGRESS,progress);
63.            loaderInfo.removeEventListener(Event.COMPLETE,complete);
64.            parent.removeChild(this);
65.        }
66.    }
67.}
ASProjectLoadingExample类:
01.package {
02.    import Flash.display.Bitmap;
03.    import flash.display.BitmapData;
04.    import flash.display.Sprite;
05.    import flash.geom.Matrix;
06. 
07.    [SWF(width="500",height="380",backgroundColor="#FFFFFF",frameRate="24")]
08.    //注意此行,Preloader为类名
09.    [Frame(factoryClass="Preloader")]
10.    public class AsProjectLoadingExample extends Sprite
11.    {
12.        [Embed(source="CD艳照.png")]
13.        private var ImageClass:Class;
14.        //嵌入一个2M的文件以显示加载效果
15.        [Embed(source="something.wma",mimeType="application/octet-stream")]
16.        private var SomeClass:Class;
17.        public function AsProjectLoadingExample()
18.        {
19.            //马赛格ing...
20.            var bmp:Bitmap = new ImageClass();
21.            var bit:BitmapData = new BitmapData(bmp.width/10,bmp.height/10,true,0);
22.            bit.draw(bmp,new Matrix(.1,0,0,.1));
23.            with (addChild(new Bitmap(bit)))
24.            {
25.                scaleX = scaleY = 10;
26.            }
27.        }
28.    }
29.}
我们也可以先用Flash做好loading效果..然后再嵌入到AS工程里..(下面的loading来自Pretty Loaded)
Time.2009-8-24     来源.http://www.gcity.com.cn     编辑.上海红提城信息科技有限公司    
© 2002-2008 www.Gcity.com.cn ICP06055129咨询热线:4008207959     021-33606181(红提城信息科技)