0

我有一个使用 Loader 类加载的图像列表,但我很难为它们分配唯一的名称。我需要唯一的名称,因为我想在一段时间后删除某些图像。有没有办法为加载程序分配一个名称或一些独特的标签,以便我以后可以删除它们?谢谢。

这是我的代码的一部分

for (var i = startnum; i < endnum; i++){
    var thumb = panels[i].@THUMB;
    var thumb_loader = new Loader();
    thumb_loader.load(new URLRequest(thumb));
    thumb_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded);

    thumb_loader.name = i;
    thumb_loader.x = (thumb_width + 20)*i;
}

我试图在另一个函数中使用 getChildByName ..

var myLoader:Loader = getChildByName( "1" ) as Loader;
myLoader.unload();

但它给了我错误 #1009:无法访问空对象引用的属性或方法。

我试图把 thumb_loader 作为全局变量,然后这样做

var myLoader:Loader = thumb_loader.getChildByName( "1" ) as Loader;

但它仍然无法正常工作。谢谢。

4

3 回答 3

3

ActionScript 3 中的所有显示对象都有一个名称属性。每当您创建一个 Loader 对象时,您都可以为它分配一个名称,如下所示:

var myLoader:Loader = new Loader();
myLoader.name = "myUniqueName";
myLoader.load( .... );
addChild( myLoader );

如果您想通过您给它的名称来引用加载器,请使用 getChildByName() 方法。

var myLoader:Loader = getChildByName( "myUniqueName" ) as Loader;
myLoader.unload();

请注意,只有在您使用 addChild() 将 Loader(s) 添加到显示列表后,getChildByName() 才会起作用。否则,您必须创建一些东西来存储对 Loader 对象的引用,例如一个数组,并通过该数组引用加载程序。例如,在您的循环之外,您可以创建一个名为 loaderArr 的数组。在您的循环中,您将执行以下操作:

loadersArr["uniqueName"] = thumb_loader;

然后,您可以通过 loadersArr 数组以您的唯一名称引用您的加载程序。

var loaderToUnload:Loader = loadersArr["uniqueName"];
loaderToUnload.unload();

如果没有看到更多代码,很难理解此代码所在的范围以及可能尝试引用这些加载器的任何其他代码所在的范围。

于 2008-11-24T16:38:25.000 回答
0

不确定我 100% 理解你的问题,但是为什么不把它们放在一个对象映射而不是一个列表中,如果你没有它们,为它们生成唯一的名称......

var img:Image;
var img_map:Object = new Object();
var last_added:int = 0;
for each (img in yourListOfImages)
{
    img_map["img_"+last_added] = img;
    last_added++;
}

根据您的环境(Flex 或 Flash),您可以使用 UID 生成器而不是我上面简单的唯一名称。

于 2008-11-24T15:29:32.987 回答
0
package 
{
    import flash.display.Loader;

    public dynamic class DynamicLoader extends Loader 
    {
        public function DynamicLoader()
        {
            super();
        }
    }
}

我相信 Loader 类是一个密封的类,所以你会想要创建这个类并使用它而不是普通的 Loader 类来给它你想要的任何属性。我还相信,如果不使用此 DynamicLoader 而不是普通的 Loader,Loader 类确实具有可用的 name 属性。

于 2008-11-24T15:31:06.227 回答