作者cjcat2266 (CJ Cat)
看板Flash
标题Re: [问题] 请问关於AS3的预载
时间Mon Jul 28 11:50:30 2008
※ 引述《goodray (RAY)》之铭言:
: 请问AS3还是可以这样写吗?还是一定要用另外一个负责载入的
: swf档来载入主要的swf档,才能够作loading bar的效果呢?
先知道,任何需要载入(无论是外部或者内部)的元件(包括.swf档案)
被载入者(content)与载入者(loader)之间一定会有个LoaderInfo物件存在
它们之间的关系是这样的:
Loader ───────────── Content
│ │
│ │
└───── LoaderInfo ─────┘
contentLoaderInfo→ ←loaderInfo
LoaderInfo是个EventDispatcher
一切载入的相关数据都由它的事件提供
所以你说的两种方法都可以做到
只是看你要把谁当作loader,谁当作content而已
1.载入写在第一格
→相当於stage是loader,.swf本身是content
所以第一格就这样写:
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, p);
this.loaderInfo.addEventListener(Event.COMPLETE, c);
function p(e:ProgressEvent):void {
//载入条的长度
loadingBar_mc.scaleX = e.bytesLoaded / e.bytesTotal;
}
function c(e:Event):void {
//载入完成之後想要做的事情
}
2.用一个.swf载入另外一个.swf
→相当於载入者里面的Loader物件是loader,被载入的.swf则是content
写法大概是这样:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEevntListener(
ProgressEvent.PROGRESS, p);
loader.contentLoaderInfo.addEventListener(
Event.COMPLETE, c);
//载入外部.swf
loader.load(new URLRequest("content.swf"));
function p(e:ProgressEvent):void {
//载入条的长度
loadingBar_mc.scaleX = e.bytesLoaded / e.bytesTotal;
}
function c(e:Event):void {
//载入完成之後想要做的事情
//通常是将载入进来的content加到display list上面
addChild(e.content);
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.87.91
1F:推 goodray:感谢,我马上去试试看 :D 07/28 11:53
2F:推 goodray:不好意思,我把上面的程式码放在第一个影格,会出现如下: 07/28 11:57
3F:→ goodray:1046: 找不到 Type,或它不是编译时期常数:ProgressEvent 07/28 11:57
4F:推 goodray:原来要import这个事件类别,总算搞定了,太感谢您了! 07/28 12:05