2012-07-11 143 views
1

如何使用加载栏和swf的百分比创建这些“正在加载,请稍候”初始屏幕? as3是否有一些内置的方法,还是应该从头开始设计?as3加载屏幕

我的意思是,你如何检测到你的swf文件正在加载到客户端浏览器中?

哦,我只将所有内容存储在一个帧中。纯粹的as3代码。

回答

1

如果您的所有代码都在时间轴上,那么最简单的方法是制作第二个swf,它仅用于加载主swf。如果你的主SWF被称为main.swf,在加载的SWF中的代码将是这样的:

//make a loader 
var loader:Loader = new Loader() 

//listen for loading progress 
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress); 

//listen for when the load is finished 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); 

//load! 
loader.load(new URLRequest("main.swf")); 

function onProgress(event:ProgressEvent):void 
{ 
    //calculate how much has been loaded 
    var percentageLoader:Number = event.bytesLoaded/e.bytesTotal; 

    //use your percentage number here to drive a loader bar graphic 
} 

function onComplete(event:Event):void 
{ 
    //remove listeners now that loading is done 
    loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, onProgress); 
    loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete); 

    //add loaded swf to the stage 
    addChild(loader.content); 
} 

顺便说一句,你的外部化资产开辟了新的预压的可能性。您可以让主SWF加载外部资产,并预先加载这些资产,而不是将所有内容都包含在主SWF中。既然你的主要瑞士法郎会很小,那么就不需要第二个瑞士法郎来装载你的主要瑞士法郎。

+0

谢谢,我想我会遵循这条路线。 – astralmaster 2012-07-11 20:36:16

1

有几种不同的方法来做到这一点。

要么你可以有两个步骤的过程 - 创建一个简单加载在主文件中的swf文件,报告进度(通过监听加载器上的进度事件),然后将加载的swf作为孩子添加。

或者,您可以将所有内容放在第2帧上,并保留在第1帧上,检查root.loaderInfo.bytesLoaded与root.loaderInfo.totalBytes值的比较,报告百分比,然后在完成时移动到第2帧。

就我个人而言,我认为方法1更好,因为你不需要用框架来玷污自己。

还有第三种方式,它使用一些奇怪的元数据标签来模拟第二种方式,但没有框架。这有点乱,但应该是可以googleable的。