loaderinfo说明

本文解析了LoaderInfo的作用及其在不同加载方式下的表现。介绍了LoaderInfo仅存在于运行时加载的对象中,并且与Loader的contentLoaderInfo共享同一对象。同时指出,通过嵌入方式加载的资源没有LoaderInfo。

1.只有在loader加载进来的对象才有loaderinfo,并且和loader的contentloaderinfo是同一个共享对象,故2者数据相同。


2.通过嵌入的方式加载的资源 ,loaderinfo为空,,即loaderinfo只是运行时加载信息,在编译时加载信息不在此种。


package { import avm2.intrinsics.memory.li32; import avm2.intrinsics.memory.sf32; import avm2.intrinsics.memory.sf64; import avm2.intrinsics.memory.si16; import avm2.intrinsics.memory.sxi1; import avm2.intrinsics.memory.sxi16; import avm2.intrinsics.memory.sxi8; import flash.display.*; import flash.events.Event; import flash.events.ProgressEvent; import flash.net.*; import flash.system.*; import flash.utils.*; import laan.smart.proxies.filesystem.*; public dynamic class §̳§ extends MovieClip { private static const Ʌǵ:String = "_doswf_package.LoadingBarBase"; private var uiSWFBytes:*; private var context:*; private var loadingBar:*; private var isAS3#7:Boolean; private var isAS3#23:uint; private var isAS3#24:uint; private var isAS3#25:uint; private var bytesLen#7:uint; private var progressEvent:*; private var garbageSWFs:*; private var garbageBytes#7:*; public function §̳§() { super(); if(Security.sandboxType != "application") { Security.allowDomain("*"); } if(stage) { this.init(); } else { addEventListener(Event.ADDED_TO_STAGE,this.init); } } private function init(param1:Event = null) : void { var _loc2_:* = null; _loc2_ = null; if(param1) { removeEventListener(Event.ADDED_TO_STAGE,this.init); } this.context = new LoaderContext(false,ApplicationDomain.currentDomain); if(this.context.hasOwnProperty("allowLoadBytesCodeExecution")) { Object(this.context).allowLoadBytesCodeExecution = true; } if(this.context.hasOwnProperty("parameters")) { Object(this.context)["parameters"] = stage.loaderInfo.parameters; } DisplayObject.prototype["@doswf__s"] = stage; DisplayObject.prototype.setPropertyIsEnumerable("@doswf__s",false); LoaderInfo.prototype["@doswf__u"] = stage.loaderInfo.url; LoaderInfo.prototype.setPropertyIsEnumerable("@doswf__u",false); LoaderInfo.prototype["@doswf__p"] = stage.loaderInfo.parameters; LoaderInfo.prototype.setPropertyIsEnumerable("@doswf__p",false); if(ApplicationDomain.currentDomain.hasDefinition(Ʌǵ)) { _loc2_ = ApplicationDomain.currentDomain.getDefinition(Ʌǵ) as Class; this.loadingBar = new _loc2_() as DisplayObject; addChild(this.loadingBar); stop(); addEventListener(Event.ENTER_FRAME,this.loaderEventsHandler#21); } else { this.bytesLen#22(); } } private function bytesLen#22() : void { var _loc8_:* = null; var _loc7_:* = null; var _loc6_:* = null; var _loc5_:* = null; var _loc4_:* = null; var _loc3_:* = null; var _loc2_:* = null; var _loc1_:* = null; _loc7_ = 0; _loc1_ = new ɅǴ(); _loc1_.endian = Endian.LITTLE_ENDIAN; _loc1_.position = 0; this.isAS3#24 = _loc1_.readUnsignedByte() - 1; this.isAS3#23 = _loc1_.readUnsignedByte() - 5; this.isAS3#25 = _loc1_.readUnsignedInt() - 7; this.bytesLen#7 = _loc1_.readUnsignedInt() - 3; _loc2_ = new ByteArray(); _loc2_.writeBytes(_loc1_,_loc1_.length - this.bytesLen#7,this.bytesLen#7); _loc3_ = 0; do { _loc7_ = 0; while(_loc7_ < this.isAS3#24) { _loc2_[_loc3_] ^= this.isAS3#23; _loc3_++; if(_loc3_ >= this.bytesLen#7) { break; } _loc7_ += 7; } _loc3_ += this.isAS3#25; } while(_loc3_ < this.bytesLen#7); _loc2_.uncompress(); _loc2_.endian = Endian.LITTLE_ENDIAN; _loc2_.position = 0; if(_loc2_.readBoolean()) { this.garbageBytes#26(_loc2_); } this.isAS3#7 = _loc2_.readBoolean(); _loc4_ = _loc2_.readUnsignedInt(); _loc5_ = new ByteArray(); _loc2_.readBytes(_loc5_,0,_loc4_); this.uiSWFBytes = new ByteArray(); _loc2_.readBytes(this.uiSWFBytes); _loc6_ = new Loader(); _loc6_.contentLoaderInfo.addEventListener(Event.INIT,this.loaderEventsHandler#7); _loc6_.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,this.loaderEventsHandler#7); _loc6_[String(String(_loc6_).split(/[\s\]]+/g)[1]).toLocaleLowerCase().substr(0,-2) + "Bytes"](_loc5_,this.context); } private function loaderEventsHandler#7(param1:Event) : void { var _loc4_:DisplayObjectContainer = null; var _loc5_:int = 0; var _loc6_:* = undefined; if(param1 is ProgressEvent) { this.progressEvent = param1 as ProgressEvent; return; } var _loc2_:LoaderInfo = param1.target as LoaderInfo; _loc2_.removeEventListener(Event.INIT,this.loaderEventsHandler#7); _loc2_.removeEventListener(ProgressEvent.PROGRESS,this.loaderEventsHandler#7); var _loc3_:Loader = _loc2_.loader; if(this.uiSWFBytes) { _loc3_ = new Loader(); _loc3_.contentLoaderInfo.addEventListener(Event.INIT,this.loaderEventsHandler#7); _loc3_.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,this.loaderEventsHandler#7); _loc3_[String(String(_loc3_).split(/[\s\]]+/g)[1]).toLocaleLowerCase().substr(0,-2) + "Bytes"](this.uiSWFBytes,this.context); this.uiSWFBytes = null; return; } if(parent is Stage) { if(this.isAS3#7) { parent.addChildAt(_loc3_.content,0); parent.removeChild(this); } else { addChild(_loc3_); } } else if(this.isAS3#7) { addChildAt(_loc3_.content,0); } else { addChildAt(_loc3_,0); } if(Boolean(this.isAS3#7) && this.progressEvent) { _loc4_ = _loc2_.content as DisplayObjectContainer; if(_loc4_.hasOwnProperty("@doswf__lph")) { Object(_loc4_)["@doswf__lph"](this.progressEvent); } else { _loc5_ = 0; while(_loc5_ < _loc4_.numChildren) { _loc6_ = _loc4_.getChildAt(_loc5_); if(_loc6_.hasOwnProperty("@doswf__lph")) { _loc6_["@doswf__lph"](this.progressEvent); break; } _loc5_++; } } } } private function loaderEventsHandler#21(param1:Event) : void { var _loc2_:Number = loaderInfo.bytesLoaded / loaderInfo.bytesTotal; Object(this.loadingBar).setProgress(this,_loc2_); if(_loc2_ == 1) { removeEventListener(Event.ENTER_FRAME,this.loaderEventsHandler#21); removeChild(this.loadingBar); gotoAndStop(2); this.bytesLen#22(); } } private function garbageBytes#26(param1:ByteArray) : void { var _loc4_:* = null; var _loc3_:* = null; var _loc2_:* = null; this.garbageSWFs = []; _loc2_ = param1.readUnsignedInt(); _loc3_ = param1.readUnsignedInt(); _loc4_ = new ByteArray(); param1.readBytes(_loc4_,0,_loc3_); this.garbageBytes#7 = new ByteArray(); this.garbageBytes#7.endian = Endian.LITTLE_ENDIAN; this.garbageSWFs = [_loc2_,_loc4_]; addEventListener(Event.ENTER_FRAME,this.garbageBytes#27); this.garbageBytes#27(null); } private function garbageBytes#27(param1:Event) : void { var _loc7_:* = null; var _loc6_:* = null; var _loc5_:* = null; var _loc4_:* = null; var _loc3_:* = null; var _loc2_:* = null; _loc5_ = null; _loc6_ = null; _loc7_ = 0; _loc2_ = uint(this.garbageSWFs[0]); _loc3_ = this.garbageSWFs[1]; _loc4_ = 3; while(_loc4_-- > 0) { _loc5_ = new ByteArray(); _loc5_.writeBytes(_loc3_); _loc5_.position = _loc5_.length; _loc5_.endian = Endian.LITTLE_ENDIAN; _loc6_ = new ByteArray(); _loc7_ = Math.random() * Math.min(_loc2_,2 * 1024 * 1024); while(_loc6_.length < _loc7_) { _loc6_.writeBytes(_loc3_,Math.random() * _loc3_.length / 3); } _loc6_.length = _loc7_; if(_loc6_.length >= 63) { _loc5_.writeShort(87 << 6 | 0x3F); _loc5_.writeUnsignedInt(_loc6_.length); } else { _loc5_.writeShort(87 << 6 | _loc6_.length); } _loc5_.writeBytes(_loc6_); _loc5_.writeShort(1 << 6); _loc5_.writeShort(0); _loc5_.position = 4; _loc5_.writeUnsignedInt(_loc5_.length); this.garbageBytes#7.writeBytes(_loc5_); if(this.garbageBytes#7.length > 30 * 1024 * 1024) { removeEventListener(Event.ENTER_FRAME,this.garbageBytes#27); break; } } } } } 是什么意思
最新发布
11-22
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值