[英]Actionscript: how to pass objects to a loader event
将对象传递给Loader的事件处理程序的推荐方法是什么?
var l:Loader = new Loader();
var o:Object = new Object();
l.tag = o; // i imagine something like this
l.contentLoaderInfo.addEventListener(Event.COMPLETE, splashCompleted);
l.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, splashIoerror);
l.load(new URLRequest(path));
function splashCompleted(e:Event):void
{
// here i want to access the object o
}
你为什么要这么做? 如果有许多加载器并且您想要将一些数据与它们中的每一个相关联,那么最好编写子类或包装类来存储数据。 例如,让我们考虑子类:
public class TaggedLoader extends Loader
{
public var tag:Object;
}
使用TaggedLoader
而不是Loader
您可以轻松访问与loader对象关联的数据:
var l:Loader = new TaggedLoader();
var o:Object = new Object();
l.tag = o;
l.contentLoaderInfo.addEventListener( Event.COMPLETE, splashCompleted );
l.load( new URLRequest( path ) );
function splashCompleted( e:Event ):void
{
var taggedLoader:TaggedLoader = ( e.currentTarget as LoaderInfo ).loader as TaggedLoader;
var tag:Object = taggedLoader.tag;
}
也可以使用地图( Object
或Dictionary
),但地图在性能方面更差。
您可以使用以下命令从事件处理程序内部访问Loader
:
( e.currentTarget as LoaderInfo ).loader
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.