AS3如何加载自身SWF

AS3如何加载自身SWF
分类: ActionScript3.0 2010-09-21 01:04 102人阅读 评论(0) 收藏 举报

mytext:TextField = new TextField();
mytext.autoSize = TextFieldAutoSize.CENTER;
mytext.selectable=false;
mytext.background = true;
var myformat:TextFormat = new TextFormat();
myformat.font = 'Verdana';
myformat.size = 10;
mytext.defaultTextFormat = myformat;
addChild(mytext);

this.root.loaderInfo.addEventListener(ProgressEvent.PROGRESS, showProgress);

function showProgress(eventrogressEvent):void {
var p:Number=event.bytesLoaded/event.bytesTotal;
var n:Number=Math.round(p*100);
mytext.text='Loading '+n.toString()+'%';
mytext.x=stage.stageWidth/2-mytext.width/2;
mytext.y=stage.stageHeight/2-mytext.height;
//trace(n);

LoaderInfo 类可提供有关已加载的 SWF 文件或图像文件(JPEG、GIF 或 PNG)的信息。 LoaderInfo 对象可用于任何显示对象。 提供的信息包括加载进度、加载程序的 URL 和加载内容、媒体的字节总数以及媒体的标示的高度和宽度。
您可以通过以下两种方法访问 LoaderInfo 对象:

flash.display.Loader 对象的 contentLoaderInfo 属性 -- contentLoaderInfo 属性始终可用于任何 Loader 对象。 对于尚未调用 load() 或 loadBytes() 方法,或者尚未充分加载的 Loader 对象,在尝试访问 contentLoaderInfo 属性的多个属性时,将引发错误。
显示对象的 loaderInfo 属性。
Loader 对象的 contentLoaderInfo 属性提供有关 Loader 对象正在加载的内容的信息,而 DisplayObject 的 loaderInfo 属性提供有关该显示对象的根 SWF 文件的信息。

使用 Loader 对象(SWF 文件或位图)加载的对象的 loaderInfo 属性引用与 Loader 对象的 contentLoaderInfo 属性相同的 LoaderInfo 对象。

换句话说,LoaderInfo 对象是加载的对象文件与加载它的 Loader 对象之间的共享对象。 由于 SWF 文件的主类的实例没有 Loader 对象,因此 loaderInfo 属性是访问 SWF 文件主类实例的 LoaderInfo 的唯一方法。

其实也可以这么理解:

loaderInfo 是自己的加载信息
contentLoaderInfo 是加载的内容(swf,jpg...)的加载信息

如果舞台上没有加载其他swf的时候,只能用loaderInfo,如果是加载进来的就可以用contentLoaderInfo,而且contentLoaderInfo 的某些属性是可以更改的,比如说加载完成之后可以更改content的width,height,x,y等信息.

下图显示了对于 SWF 文件主类实例、Loader 对象的 contentLoaderInfo 属性以及加载对象的 loaderInfo 属性,LoaderInfo 对象的不同用法:

在加载操作未完成时,Loader 对象的 contentLoaderInfo 属性的某些属性不可用。 您可以获得某些属性,如 bytesLoaded、bytesTotal、url、loaderURL 和 applicationDomain。 当 loaderInfo 对象调度 init 事件时,您可以访问 loaderInfo 对象以及加载的图像或 SWF 文件的所有属性。

注意:LoaderInfo 对象的所有属性都是只读的。

Loaderinfo 类从 EventDispatcher 类继承的 EventDispatcher.dispatchEvent() 方法不适用于 LoaderInfo 对象。 如果在 LoaderInfo 对象上调用 dispatchEvent(),将引发 IllegalOperationError 异常

你可能感兴趣的:(as3)