繁体   English   中英

Actionscript:如何将对象传递给loader事件

[英]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;
}

也可以使用地图( ObjectDictionary ),但地图在性能方面更差。

您可以使用以下命令从事件处理程序内部访问Loader

( e.currentTarget as LoaderInfo ).loader

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM