Arrays AS3&;MVC:在阵列中导入多个图像

Arrays AS3&;MVC:在阵列中导入多个图像,arrays,actionscript-3,model-view-controller,loader,Arrays,Actionscript 3,Model View Controller,Loader,我正在用MVC做一个纸牌游戏。我知道在我的情况下使用MVC是过分的,我使用它是因为我需要学习它 这是我的问题:在我的模型中,我导入了多个存储在一个数组(我的一副牌)中的图像。然后我需要在视图中访问这个数组,以便为每个图像添加子对象 型号: package com { import flash.events.*; import flash.display.*; import flash.net.*; public class Model extends Even

我正在用MVC做一个纸牌游戏。我知道在我的情况下使用MVC是过分的,我使用它是因为我需要学习它

这是我的问题:在我的模型中,我导入了多个存储在一个数组(我的一副牌)中的图像。然后我需要在视图中访问这个数组,以便为每个图像添加子对象

型号:

package com {

    import flash.events.*;
    import flash.display.*;
    import flash.net.*;

    public class Model extends EventDispatcher {

        var imgcontainer:Loader = new Loader();
        var i:int=0;
        var _setCartes:Array;

        public function Model(target:Stage){
            _setCartes = new Array();
            ImportImg();
        }

        public function ImportImg():void{

            while (i<13){

                imgcontainer.load(new URLRequest("img/"+i+".png"));
                _setCartes.push(imgcontainer);
                i+=1;
                trace(_setCartes);
            }

        }


        public function get setcartes():Array {

            return _setCartes;

        }

    }
}
有两件事出了问题:

  • 首先,数组中的每个元素都显示相同的图像。如果我添加child _setCartes[5]或_setCartes[3]或_setCartes[0]或其他内容,它将始终显示相同的卡,就像它在我的阵列中存储了13 x相同的图像一样

  • 其次,我不能同时添加_setCartes[5]和_setCartes[3],只有第二个会显示。我试图将数组中的每个元素存储在不同的精灵中,并在每个精灵中添加child,但它没有显示任何内容。当我追踪精灵时,它说的是“对象精灵”(当我追踪数组时,它显示13个“对象加载器”),但舞台上什么也没有出现

我不明白我做错了什么

提前感谢您的帮助,
Jussy.

您的问题在于对loader类的理解。首先,您需要为每个图像使用不同的加载程序,使用一个加载程序将最终导致加载程序的内容是最后加载的图像。其次,您试图将同一个加载器添加到它的容器中两次,因此看起来它只添加了一个加载器,但事实是,它添加了相同的加载器两次! 帮助:

底线是,对不同的图像使用不同的加载程序。 希望有帮助,马顿

我会这样做:

public class Model extends EventDispatcher {

    var _setCartes:Array;

    public function Model(target:Stage){
        _setCartes = new Array();
        ImportImg();
    }

    public function ImportImg():void{

        for (var i:int = 0; i < 13; i++)
        {
            var imgcontainer:Loader = new Loader(); //create a new loader for every iteration
            imgcontainer.load(new URLRequest("img/" + i + ".png"));
            _setCartes.push(imgcontainer);
            trace(_setCartes);
        }

    }

    public function get setcartes():Array {

        return _setCartes;

    }

}

我使用的一个方法是跟踪需要加载的图像的数量,为每个完成的加载程序减去一个,并在这个数字为零时声明加载已完成。

非常感谢,这非常有用!!
public class Model extends EventDispatcher {

    var _setCartes:Array;

    public function Model(target:Stage){
        _setCartes = new Array();
        ImportImg();
    }

    public function ImportImg():void{

        for (var i:int = 0; i < 13; i++)
        {
            var imgcontainer:Loader = new Loader(); //create a new loader for every iteration
            imgcontainer.load(new URLRequest("img/" + i + ".png"));
            _setCartes.push(imgcontainer);
            trace(_setCartes);
        }

    }

    public function get setcartes():Array {

        return _setCartes;

    }

}
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, myCompleteHandler);