Хммм, он показывает только одну фотографию на 6-м элементе, потому что вы запускаете цикл for 6 раз и добавляете выбранную фотографию к каждому новому спрайту подряд.Вы видите, когда вы добавляете экранный объект к другому экранному объекту, а затем добавляете этот же экранный объект к чему-то другому, исходный элемент извлекается из первого экранного объекта и добавляется к следующему.Я знаю, что это может быть трудно понять, когда вы пишете таким образом, поэтому давайте разберемся так:
var photo:Sprite = new Sprite();
var container1:Sprite = new Sprite();
var container2:Sprite = new Sprite();
//Add to the first container
container1.addChild(photo);
//At this point when you add to the next container, the object is removed from container1 and placed inside container 2
container2.addChild(photo);
Именно поэтому, когда вы используете _model.photos [ii], вы добавляете уникальную картинку к каждому6 новых спрайтов контейнеров, которые вы создаете в цикле for, потому что в каждый контейнер добавляются уникальные элементы.Вы получаете доступ к этим уникальным элементам, используя индекс массива (ii var), который увеличивается с каждым циклом.
Если вы хотите добавить одно и то же изображение к каждому шести элементам, то вам понадобитсяДублируйте данные оригинальной картинки 6 раз.Один из способов сделать это - использовать объект URLLoader и перезагрузить двоичные данные, которые составляют исходное изображение.Вы бы сделали это так:
var originalPictureLoader:URLLoader = new URLLoader();
originalPictureLoader.addEventListener(Event.COMPLETE, originalPictureLoaded);
originalPictureLoader.dataFormat = URLLoaderDataFormat.BINARY;
originalPicture.load(new URLRequest("http://www.mysite.com/picture.jpg"));
private function originalPictureLoaded(e:Event):void
{
var pictureBytes:ByteArray = URLLoader(e.currentTarget).data as ByteArray;
var imageDiplicateLoader:Loader;
for (var ii:int; ii < 6; ii++)
{
//Create BG
var s:Sprite = new Sprite();
s.graphics.beginFill(Math.random() * 0xffffff, 0.4);
s.graphics.drawRect(0, 0, 291, 184);
//add Photo
var p:Sprite = new Sprite();
imageDiplicateLoader = new Loader();
imageDiplicateLoader.loadBytes(pictureBytes);
p.addChild(imageDiplicateLoader);
p.scaleX = p.scaleY = 0.2;
p.x = 0;
p.y = 0;
s.addChild(p);
cards.push(s);
}
}
Теперь имейте в виду, что это всего лишь один метод, и я написал это на макушке.Итак, я не уверен, но вы МОЖЕТЕ дублировать данные pictureBytes внутри цикла for, но я в это не верю.Если бы вам пришлось, вот как вы это сделаете:
var bytesCopy:ByteArray = new ByteArray();
pictureBytes.position = 0;
bytesCopy.writeBytes(pictureBytes);