У меня возникли проблемы с выяснением того, как организовать данные, извлеченные из XML, в ячейки внутри контейнера. Я уверен, что это должно быть основной вещью в AS3, но моя голова зажарена .. кто-нибудь может помочь?
В основном массив, если он передан callThumbs()
, который перебирает его и сравнивает записи с предварительно загруженным XML _my_images
. Если совпадение найдено, оно отправляется на processXML
, который загружает всю необходимую информацию и загружает миниатюру .jpg. Все это затем подается на createCell
, который создает определенную ячейку со значениями положения в зависимости от значений x_counter
и y_counter
(4 ячейки в строке) и добавляет ячейку в контейнер _container_mc
.
Проблема: все это прекрасно работает и выглядит нормально, проблема в том, что ячейки в контейнере не отображаются в порядке убывания . Они расположены в случайном порядке, возможно потому, что для загрузки некоторых из .jpg требуется больше времени и т. Д. Как мне легко организовать ячейки внутри контейнера в порядке убывания по значению XML .id? Или как заставить Flash ждать, пока миниатюра и данные не будут загружены, а ячейка создана и добавлена?
Спасибо, ребята, буду очень признателен за всю помощь!
PJ
//Flash (AS3)
function callThumbs(_my_results:Array):void { // selector = 1 for specific items, 2 for search items
var _thumb_url:XML;
for (var r:Number=0; r < _my_results.length; r++) { // iterate through results vector, compare with _my_images XML .id
for (var i:Number=0; i < _my_images.length(); i++) {
if (_my_images[i].@id.toXMLString() == _my_results[r]) {
_thumb_url=_my_images[i];
processXML(_thumb_url, i);
}
}
}
} // End callThumbs
function processXML(imageXML:XML, num:Number) { // Processes XML data and loads .jpg thumbnail
var _thumb_loader=new Loader();
_thumb_loader.load(new URLRequest("thumbs/thumb_sm/" + imageXML.@id + "_st.jpg"));
_thumb_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,thumbLoaded);
_thumb_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, urlNotFound);
var id:XMLList = new XMLList;
id = imageXML.@id;
var description:XMLList = new XMLList;
description = imageXML.@description;
function urlNotFound(event:IOErrorEvent):void {
trace("The image URL '" + String(imageXML.@id) + "' was not found.");
}
function thumbLoaded(e:Event):void {
var imageLoader:Loader = Loader(e.target.loader);
var bm:Bitmap = Bitmap(imageLoader.content);
createCell(bm, id, description, num);
adjustFooterBar(); // Adjust bottom footer
}
} // End processXML
private function createCell(_image:Bitmap, _id, _description:String, _position):void { // Creates a cell with data, add to container
var _cell_mc = new CellTitle();
_cell_mc.initCell(_image, _id, _description, _position, x_counter, y_counter);
if (x_counter+1 < 4) {
x_counter++;
} else {
x_counter = 0;
y_counter++;
}
_container_mc.addChild(_cell_mc); // movieclip container
} // End createCell