Arrays AS3&;MVC:在阵列中导入多个图像
我正在用MVC做一个纸牌游戏。我知道在我的情况下使用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
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);