+ -
当前位置:首页 → 问答吧 → AS3本身下载

AS3本身下载

时间:2011-04-06

来源:互联网

今天看了一下大家做的AS3自身下载代码,自己也动手做了一个。附加了源文件,大家可以下载使用。
如果使用可以直接修改 LloadMC的皮肤就可以了。
先上代码
核心代码
复制内容到剪贴板
代码:
package {
    import flash.display.MovieClip;
    import flash.display.Stage;
    import flash.events.Event;
    import flash.events.ProgressEvent;
    import flash.text.TextField;
    import LoadMC;
    public class Get_load {
        var get_root_:Object;
        var loadmc:LoadMC=new LoadMC();
        /**
        下载接口API
        */
        public function call_load(get_root) {
            //全局变量赋值
            get_root_=get_root;
            //停止SWF
            get_root_.stop();
            //开始下载
            get_root_.loaderInfo.addEventListener(Event.COMPLETE,laod_complete);
            get_root_.loaderInfo.addEventListener(ProgressEvent.PROGRESS,laod_progress);
        }
        /**
        下载过程
        */
        function laod_progress(ent:ProgressEvent) {
            var tmp:Number=int(ent.target.bytesLoaded/ent.target.bytesTotal*100);
            var res:String=tmp.toString()+'%';
            //赋值给MC下载进度
            loadmc.echo.text=res;
            //动画形象表现
            loadmc.gotoAndStop(tmp);
            //给下载动画定位到舞台
            get_root_.x=(get_root_.stage.width)/2;
            get_root_.y=(get_root_.stage.height)/2;
            get_root_.addChild(loadmc);
        }
        /**
        下载完毕
        */
        function laod_complete(ent:Event) {
            get_root_.gotoAndStop(2);
            //移除MC
            get_root_.removeChild(loadmc);
        }
    }
}
接着是LoadMC的代码
复制内容到剪贴板
代码:
package {
    import flash.display.MovieClip;
    import flash.text.TextField;
    public class LoadMC extends MovieClip {
        public function loadmc() {
            var loadmc:LoadMC=new LoadMC();
            loadmc.stop();
            return loadmc;
        }
    }
}
文档类的调用方法
复制内容到剪贴板
代码:
package {
    import flash.display.MovieClip;
    import Get_load;
    public class Doo extends MovieClip {
        var get_root_=this;
        public function Doo() {
            var ga=new Get_load;
            ga.call_load(get_root_);
        }
    }
}
希望大家多多指教
loadAS3.rar (9.93 KB)
loadAS3.rar (9.93 KB)
下载次数: 0
2011-4-6 18:04

作者: ebfming3   发布时间: 2011-04-06

AS3的自身loading 是不推荐侦听  ProgressEvent.PROGRESS的(在FF下可能会失败)

仍然推荐和AS2时一样,在enterFrame中轮循

作者: flash023   发布时间: 2011-04-06

晕啊。
enterFrame中能获得swf的 bytesLoaded 吗

作者: ebfming3   发布时间: 2011-04-06

get_root_.loaderInfo.addEventListener(Event.ENTER_FRAME,laod_progress);
              }
              /**
              下载过程
              */
              function laod_progress(ent:Event) {
                     var tmp:Number=int(ent.target.bytesLoaded/ent.target.bytesTotal*100);
                     var res:String=tmp.toString()+'%';
                     //赋值给MC下载进度
                     load_mc.echo.text=res;
                     //动画形象表现
                     load_mc.gotoAndStop(tmp);
                     //给下载动画定位到舞台
                     load_mc.x=get_x;
                     load_mc.y=get_y;
                     get_root_.addChild(load_mc);
              }
这样好像就获得不到了

作者: ebfming3   发布时间: 2011-04-06

不晕,不好像
复制内容到剪贴板
代码:
function onLoadProgress(e:Event):void{
    var _l:Number =loaderInfo.bytesLoaded/loaderInfo.bytesTotal;    
    trace(_l);
    if(_l>=1){
        removeEventListener(Event.ENTER_FRAME,onLoadProgress);
    }    
}
addEventListener(Event.ENTER_FRAME,onLoadProgress);

作者: flash023   发布时间: 2011-04-06


import flash.events.Event; import flash.events.ProgressEvent; this.addEventListener(Event.ENTER_FRAME,enterFrameHandler); this.loaderInfo.addEventListener(ProgressEvent.PROGRESS,progressHandler); this.loaderInfo.addEventListener(Event.COMPLETE,completeHandler); function enterFrameHandler(event:Event):void { trace(this.framesLoaded/this.totalFrames*100); //这里是按帧数的比例来计算加载进度的。; if (this.framesLoaded == this.totalFrames) { trace("加在完成"); } } function progressHandler(event:ProgressEvent):void { trace(event.bytesLoaded/event.bytesTotal*100);//这里是用数据量来计算加在进度的。 } function completeHandler(event:Event):void { this.removeEventListener(Event.ENTER_FRAME,enterFrameHandler); this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS,progressHandler); this.loaderInfo.removeEventListener(Event.COMPLETE,completeHandler); }
 提示:您可以先修改部分代码再运行
版主大概讲的是这个意思吧。

[ 本帖最后由 flashxie 于 2011-4-6 19:32 编辑 ]

作者: flashxie   发布时间: 2011-04-06