Чтобы получить доступ к ширине, вы должны сделать это в функции, назначенной для обработки Event.COMPLETE.
"Вам понадобится массив, содержащий элементы, которые вы хотите загрузить. Вероятно, вам следует загрузить эти данные с помощью XML, чтобы они были динамичными и масштабируемыми. После загрузки XML-данных их следует назначить массиву любым способом, который вам нужен. Например, причина, по которой мы должны использовать массив в этой ситуации, а не просто использовать объект XML, который по сути является массивом, заключается в том, что вам нужно знать ширину объектов, чтобы вы могли основывать следующие позиции X на позиции вне последние объекты X позиция плюс его ширина.
В XML обычно используют цикл for и просто повторяют количество раз «x». Мы не хотим этого, в этом случае. Чтобы получить свойство «WIDTH» загруженного актива, к нему необходимо обратиться из функции, назначенной для запуска, когда загрузчик запускает Event.COMPLETE. Как только изображение будет завершено, оно удалит элемент из массива, установит переменную lastX и lastWidth, затем получит следующий элемент в массиве и начнет все сначала. В конце концов массив пуст, и процесс завершен.
-Примечание: я пропущу загрузку XML и просто введу данные в массив самостоятельно.
package
{
import flash.display.Sprite;
import flash.display.Loader;
import flash.net.URLRequest;
public class DocumentClass extends Sprite
{
private var _array:Array;
private var _lastX:Number;
private var _lastWidth:Number;
public function DocumentClass():void
{
_array = new Array();
//Add Items to an array however you wish. I did it
//this way to make it easier to read on this site.
_array.push({name: "image1", path: "path/to/image1"});
_array.push({name: "image2", path: "path/to/image2"});
_array.push({name: "image3", path: "path/to/image3"});
loadImage();
}
private function loadImage():void
{
if(_array.length > 0)
{
var loader:Loader = new Loader();
addChild(loader);
var request:URLRequest = new URLRequest(_array[0].path); //Loads first item in the array each time.
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);
loader.x = _lastX + _lastWidth;
laoder.load(request);
_lastX = loader.x; //We set after so we are ready for the next.
_array.shift(); //Remove the first item from the array.
}
}
function onImageLoaded(e:Event):void
{
_lastWidth = e.target.width;
loadImage(); //Attempt to load another image if the array isn't empty.
}
}
}
Надеюсь, это поможет, код не протестирован, но концепция кажется верной.