我正在构建一个ActionScript 3加载器,它显示Flash加载外部脚本的进度.这是我的代码片段完美无缺,但我有点困惑为什么我需要它:
this.SWFLoader = new Loader(); this.SWFLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, trackProgress); this.SWFLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete); this.SWFLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
如您所见,我有三个事件侦听器,每个侦听器用于侦听在加载过程中触发的不同事件.
关于上面的代码片段,这是我不确定的:
contentloaderinfo
对象是什么?
该contentloaderinfo
对象包含哪些属性?
为什么我不能用this.SWFLoader.addEventListener()
?
什么时候适合使用contentloaderinfo
?
这是一个我一直很困惑的话题,我还没有得到很好的解释.对不起,问题是崩溃列表.我将奖励任何和所有好的答案.
感谢您的时间.
您创建了一个Loader
类来进行加载,并且contentLoaderInfo
是该类中的一个对象,它跟踪有关正在加载的内容的一些基本信息.它的一些属性是bytesLoaded
,bytesTotal
,url
,loaderURL
,和applicationDomain
.到目前为止最常用的是bytesLoaded
和bytesTotal
,它可以为您提供方便的百分比.每次ProgressEvent.PROGRESS
调用时都会更新这些内容,这使得只有一些图形元素远离预加载器.
该contentLoaderInfo
对象还有其他方便的事件,您可以订阅(就像您在您的示例中),以了解加载过程何时开始,更新,完成和/或甚至失败.
您可以访问AS3文档以获取更多详细信息:http: //help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html#contentLoaderInfo
令人困惑的是,它contentLoaderInfo
是一个LoaderInfo
对象,所以你可以在这里看到它的属性和方法:http:
//help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/LoaderInfo.html
您无法使用,this.SWFLoader.addEventListener()
因为SWFLoader不会触发该事件.相反,它更加加载友好的child(contentLoaderInfo
)就是这样做的 - 因此代码就像它一样工作.
contentLoaderInfo
当您需要利用它可用的方法或属性时,适合使用.这可能听起来像一个狡猾的答案,但这是真的.通常,您将编写函数来更新舞台上的元素,让用户了解加载部门正在发生的事情 - 就像您现在一样.