AS3工程中的Loading的应用

  •   2009-07-08/16:24
  •   今天又来介绍Loading...(-_-!!!...好像整天都介绍Loading..希望没误导各位...)

    首先..由于AS工程没有帧..所以不能用常用的方法来做Loading..

    这里介绍的方法使用元标签Frame(应该是元标签吧?还是叫元数据标签)

    网上对Frame的介绍是...使用指定的类替换文档类...

    并把其它的东西都丢到了该类的第二帧...

    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;
     
                 
    }
     
             
    }
     
         
    }
     
    }
     


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多