幅にアクセスするには、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.
}
}
}
コードはテストされていませんが、コンセプトは有効なようです。