AS3通俗教程---AS3自身loading制作 AS3通俗教程---AS3自身loading制作 我也来学着写教程:lol ,希望能对大家有所帮助,若发现问题欢迎指正!先说主场景舞台有内容的项目(如MV)的做法:有人问是不是new一个loader,然后loader.load(this),其实根本没这么麻烦,很简单,在文档类构造函数里写上:loaderInfo.addEventListener(ProgressEvent.PROGRESS,你的处理函数)就行了,处理函数这样写:function 你的处理函数(e : ProgressEvent){trace(e.bytesLoaded/e.bytesTotal);}就行了,简单吧!再说界面代码分离项目(主舞台内容靠AS生成)的做法:这个容易出错,常见错误是按照上面MV的loading一样做,这样的结果是loading一出来就是100%,原因在于界面代码分离项目主时间轴通常只有一帧,而flash会默认在第一帧导出类,并在此之后调用文档类的构造函数,也就是说progress事件的侦听是在加载完成后才起作用,当然看不到进度了!解决方法一,双文件法(代码见回复),这种方法实际是绕过去了:建立loader.as, 建loader.fla并设loader为文档类建立main.as, 建main.fla并设main为文档类在loader.as中 new一个Loader实例 loader,并用load方法载入main.swf 在 loader.contentLoaderInfo上添加progress和complete侦听 在progress处理函数中更新textField,并在complete处理函数将loader.content添加到舞台在main.as中 构建舞台内容解决方法二,双帧法,这才是真正解决:但有个小遗憾是主时间轴是2帧,但已经不错了,呵呵建立loader.as,再建立fla文件,保证主时轴有两帧且都为关键帧在fla中: 建立一个空Mc,将此Mc拖到主场景的第二帧 双击编辑空元件,再将此元件的时间轴改为两帧且都为关键帧,进入第二帧,将库中所有链接到类的元件拖到舞台 将所有链接到类的元件的链接属性中的“在第一帧导出”取消掉: 在loader.as中 建立textField并推入舞台, 构造函数中为loaderInfo添加progress和complete侦听 在progress处理函数中更新textField,并在complete处理函数中再添加enter_frame侦听 在enter_frame处理函数中构建舞台内容,并移除enter_frame侦听,也就是说让enter_frame处理函数执行一次就可以了[ 本帖最后由 andy-tang 于 2007-11-28 11:04 编辑 ] 无效做法.rar (724.61 KB) 双文件.rar (727.04 KB) 双帧.rar (724.95 KB) 收藏 分享 评分 AS3及Game高级群:48089045欢迎加入! 回复 引用 订阅 TOP andy-tang 中级会员 帖子 584 积分 120 技术分 7 在线时间 432 小时 注册时间 2007-5-7 2# 发表于 2007-11-23 18:40 | 只看该作者 无效代码: package {import flash.display.MovieClip;import flash.events.*;import flash.text.*;//////public class loader extends MovieClip { var ttf=new TextField();///建立一个TextField实例 public function loader() { addChild(ttf);/////////将TextField实例推到舞台 loaderInfo.addEventListener(ProgressEvent.PROGRESS,progressHandler);///当进度变化时更新TextField实例的text属性 loaderInfo.addEventListener(Event.COMPLETE,completeHandler);///////////当载入完成后显示内容 } function progressHandler(e:ProgressEvent) { ttf.text=e.bytesLoaded*100/e.bytesTotal; trace(ttf.text); } function completeHandler(e:Event) { removeChild(ttf);//////////////载入完成后移除进度显示文本 addChild(new main()); }}} 复制代码 双文件代码-loader.as package {import flash.display.MovieClip;import flash.display.Loader;import flash.net.URLRequest;import flash.text.*;import flash.events.*;////public class loader extends MovieClip { var mainLoader=new Loader();///建立一个Loader实例用于载入main.swf var ttf=new TextField();///////建立一个TextField实例用于显示载入百分比 public function loader() { addChild(ttf);///////////////////////////////////////将TextField实例显示到舞台 mainLoader.load(new URLRequest("main.swf"));/////////开始载入main.swf mainLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progressHandler);///当载入进度变化时更新进度显示 mainLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler); //////////当载入完成后将main.swf加到舞台 } function progressHandler(e:ProgressEvent) { ttf.text=(e.bytesLoaded*100/e.bytesTotal).toFixed(1); } function completeHandler(e:Event) { addChild(mainLoader.content); }}} 复制代码 双帧代码-loader.as package {import flash.display.MovieClip;import flash.events.*;import flash.text.*;import flash.net.*;//////public class selfloader extends MovieClip { var ttf=new TextField ;//仍然建立一个TextField实例 public function selfloader() { addChild(ttf);////////仍然将TextField实例推到舞台 loaderInfo.addEventListener(ProgressEvent.PROGRESS,progressHandler);//仍然当进度变化时更新TextField实例的text属性 loaderInfo.addEventListener(Event.COMPLETE,completeHandler);//////////仍然当载入完成后显示内容 } function progressHandler(e:ProgressEvent) { ttf.text=e.bytesLoaded * 100 / e.bytesTotal.toFixed(); trace(ttf.text); } function completeHandler(e:Event) { this.addEventListener(Event.ENTER_FRAME,enterframeHandler);//添加enter_frame侦听 trace("载入完成"); } function enterframeHandler(e:Event) { if (currentFrame == 1) {///////////////////////////////////////等于1或是2都可以,1更好 stop();//////////////////////////////////////////////////其实这个stop()可以不加,加上更好 removeChild(ttf);//////////////////////////////////////////////////仍然移除进度显示文本 this.removeEventListener(Event.ENTER_FRAME,enterframeHandler);/////必须移除侦听 addChild(new main ); trace("OK"); } }}} 复制代码 [ 本帖最后由 andy-tang 于 2007-11-24 00:43 编辑 ] AS3及Game高级群:48089045欢迎加入! posted on 2011-06-30 14:48 jiahuafu 阅读(...) 评论(...) 编辑 收藏