Вы столкнетесь с проблемами при использовании переменной-члена swfLoader, например: Вы добавляете каждый загрузчик на сцену, но ссылка swfLoader всегда указывает только на один объект (последний добавленный).
Также сложно расположить ваши клипы таким образом, потому что вы можете получить только одну ссылку на загрузчик за раз, поэтому вы не сможете рассчитать позицию относительно других загрузчиков.
Если на сцене нет ничего, кроме загрузчиков, вы можете перебирать дочерние объекты основного объекта, но я бы настоятельно рекомендовал вместо этого хранить ваши клипы в массиве.Ваш код будет выглядеть примерно так:
var loaders:Array = []; // an Array of loaders instead of a single loader
var xml:XML;
var xmlList:XMLList;
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.load(new URLRequest("components.xml"));
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
function xmlLoaded(event:Event):void
{
xml = XML(event.target.data);
xmlList = xml.children();
for (var i:int = 0; i < xmlList.length(); i++)
{
var swfLoader:Loader = new Loader(); // local instead of member variable
swfLoader.load(new URLRequest(xmlList[i].@SWFsource));
swfLoader.contentLoaderInfo.addEventListener(Event.INIT, loaderInitHandler);
}
}
function loaderInitHandler(event:Event):void
{
var swfInfo:LoaderInfo = event.target as LoaderInfo;
var swfLoader:Loader = swfInfo.loader;
if (loaders.length > 0) {
var lastLoader : Loader = loaders[loaders.length-1];
swfLoader.y = lastLoader.y + lastLoader.height + 10; // positioning happens here
}
addChild(swfLoader);
loaders.push(swfLoader);
}
Загрузчики добавляются на сцену и помещаются в массив только после полной загрузки, поэтому вы можете быть уверены, что lastLoader всегда является последним последним элементом, который былразмещены на сцене.Позже вы можете использовать массив loaders для удаления или изменения расположения изображений.