Laan's steps..

Feed Rss

LoaderInfo has frustrated me for whole a day

12.30.2009, flash, by .

LoaderInfo太诡异了,直接看代码:

public class Target extends Sprite
{
	public function doo(li:LoaderInfo):String {
		return li.url;
	}

}

编译为Target.swf后,使用另个swf用Loader.loadBytes方法加载Target.swf, 主要代码如下:

//Target.swf二进制数据
var bytes:ByteArray = urlLoader.data as ByteArray;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
loader.loadBytes(bytes, new LoaderContext(false, ApplicationDomain.currentDomain));

function initHandler(event:Event):void {
	var li:LoaderInfo = event.target as LoaderInfo;
	var loader:Loader = li.loader;

	var content:Object = loader.content;

	trace(loaderInfo.url);
	trace(content.doo(loaderInfo));
}

杯具啊,明明loaderInfo就是同一个啊。竟然获取的url不一样:
file://D:My DocumentsFlex Builder 3test_flashbin-debugTargetLoader.swf
file://D:My DocumentsFlex Builder 3test_flashbin-debugTargetLoader.swf/[[DYNAMIC]]/1

难道LoaderInfo.url是这样实现的:

public function get url():String {
	谁调我了?哦是你啊!我去找找内存。哦 是使用loadBytes方法加载的啊
	return .../[[DYNAMIC]]/...
}

苍天啊~~~ 别逼我去读flashplayer的源码啊~~~~ 我滴神~~~

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>