在AS3中的循环内部,在新创建的实例中添加子项

时间:2010-06-06 01:19:55

标签: image loops instance loader actionscript-3

我正在尝试创建一个图库,其中每个拇指都放置在其自己的影片剪辑中,该剪辑将包含更多数据,但它会一直失败,因为它不会让我引用新创建的影片剪辑实例。以下是我想要做的事情。

var xml:XML;
var xmlReq:URLRequest = new URLRequest("xml.xml");
var xmlLoader:URLLoader = new URLLoader();
var imageLoader:Loader;
var vidThumbn:ThumbNail;
var next_y:Number = 0;

    for(var i:int = 0; i < xml.downloads.videos.video.length(); i++)
{   
    vidThumbn = new ThumbNail();
    imageLoader = new Loader();
    imageLoader.load(new URLRequest(xml.downloads.videos.video[i].ThumbnailImage));
    vidThumbn.y = next_y;
    vidThumbn.x = 0;
    next_y += 117;
    imageLoader.name = xml.downloads.videos.video[i].Files[0].File.URL;
    videoBox.thumbList.thumbListHolder.addChild(vidThumbn);
    videoBox.thumbList.thumbListHolder.vidThumbn.addChild(imageLoader);

}

每次都在最后一行死亡。我如何引用该vidThumbn实例,以便添加imageLoader?我不知道我错过了什么。感觉它应该有用。

2 个答案:

答案 0 :(得分:0)

您必须将其称为vidThumbn,而不是扩展地址....

答案 1 :(得分:0)

我认为它失败了,因为imageLoader没有加载图像。此外,imageLoader不会将“数据”保存为iamgeLoader.content

最佳方式: 创建一个“LoaderSprite类”而不是imageLoader = new Loader();

    public class LoaderSprite extends Sprite 
{
    private var _ldr : Loader;

    public function LoaderSprite(url : String)
    {
        _ldr = new Loader();
        _ldr.load(new URLRequest(url));
        _ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
    }

    private function onComplete(event : Event) : void
    {
        //Bitmap(_ldr.content).smoothing = true;
        addChild(_ldr.content);

        // Fireing your own event
        //dispatchEvent(new LoaderSpriteEvent(LoaderSpriteEvent.LOADED));
    }
}