Para acceder a la anchura debe hacerlo dentro de la función asignada para manejar Event.COMPLETE.
"Querrá una matriz que contenga los elementos que desea cargar. Probablemente debería cargar esta información en XML para que sea dinámica y escalable. Una vez cargados los datos xml, debe asignarse a una matriz de la forma que sea. La razón por la que debemos usar una matriz en esta situación, en lugar de simplemente usar el objeto XML, que es esencialmente una matriz, es porque necesita conocer el ancho de los objetos para poder basar la siguiente posición X de los objetos los últimos objetos posición X más su ANCHO
Con XML es común utilizar un bucle for y simplemente iterar a través de "x" cantidad de veces. No queremos esto, en este caso. Para obtener el "ANCHO" propiedad del activo cargado, se debe acceder desde dentro de la función asignada para disparar cuando el cargador dispara Event.COMPLETE. Una vez que la imagen se haya completado, eliminará el elemento de la matriz, establecerá una variable como lastX y lastWidth, y luego obtendrá el siguiente elemento de la matriz y comenzará de nuevo. Finalmente, la matriz está vacía y el proceso está completo.
-Nota: Voy a omitir la carga del XML y simplemente inyectar los datos en la matriz de mí mismo.
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.
}
}
}
Espero que esto ayude, el código no está probado, pero el concepto parece válido.
Gracias, esto ayudó , aunque creo que el código es 'content_loader.contentLoaderInfo.addEventListener (Event.CO' y no' imageLoader.contentLoader' ... –