在AS2里,我们要写一个自身loading很简单,一个_root.getBytesLoaded和一个_root.getBytesTotal就完了!可是在AS3里就没这么简单了,AS3有很多load函数,net包里有网络下载的,display包里有MC加载专用的loader,一时间找不到像AS2里的_root.getBytesLoaded和_root.getBytesTotal替代品.可是在做自身loading的办法,网上的牛人们已经找到了解决办法.
在这里讲讲核心思路,在帮助里看过mouseX和mousey的人都知道,帮助里都是这么写的stage.mouseX和stage.mouseY,还讲到stage可以当一个MC来用.既然stage可以当一个MC来使用,那我们只要将加载MC专用的loader用上就好了.最简单的,stage转成MC就可以了!
============================以下给出代码===================================================
import flash.display.Stage;
import flash.display.LoaderInfo;
import flash.events.ProgressEvent;
stop();
var loadtext=new TextField();
this.addChild(loadtext);
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS,loading);//加载过程中的处理
this.loaderInfo.addEventListener(Event.COMPLETE,loadcomplete);//加载完成后的处理
function loading(event:ProgressEvent):void {
var loaded:Number=event.bytesLoaded/event.bytesTotal;
var n:int=loaded*100;
this.loadtext.text=n+"%";
}
function loadcomplete(event:Event):void {
this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS,loading);
}
==========================================================================代码完结
核心代码就这么多,很简单,将stage转成MC就用了this.而loadinfo是为了取得加载目标的信息.在这里也就是自身的信息.
就这么简单.
转载请注明出自逍遥E站 http://www.xyflash.com/bbs/,本贴地址:http://www.xyflash.com/bbs/viewthread.php?tid=23845
- package{
- import flash.display.*;
- import flash.events.*;
- public class main extends MovieClip{
- public function main():void{
- stop()
- //也可以使用addFrameScript给指定的帧添加代码
- //addFrameScript(1,frameScript)
- //调用加载脚本
- loadScript()
- }
- private function loadScript():void{
- //as3中,所以的显示对象都可以使用loaderInfo来侦听加载状态
- //我们添加一个""Progress""和一个""complete""
- root.loaderInfo.addEventListener(ProgressEvent.PROGRESS,loadProgress,false,0,true)
- root.loaderInfo.addEventListener(Event.COMPLETE,init,false,0,true)
- }
- private function loadProgress(e:ProgressEvent):void{
- //加载过程中会调用此函数
- //e.bytesLoaded/e.bytesTotal分别是已经加载字节跟总字节
- //需要显示进度可以在这里操作
- trace(e.bytesLoaded,e.bytesTotal)
- }
- private function init(e:Event):void{
- //加载完成,我们跳到第二帧进行播放
- gotoAndStop(2)
- //操作代码....
- }
- private function frameScript():void{
- trace(""第二帧停止"")
- stop()
- //操作
- }
- }
- }