1

わかりやすくするために編集: for ループで外部 URL からすべての種類の画像を読み込みたい。それらをループで呼び出したいのですが、それが終わったらループを再開します。ただし、「httpリクエスト」でそれらを再度呼び出したくはありません。ロードされた画像を何度もループしたいと思います。

ループ内で動的ローダー名を作成することは可能ですか?

コード例は次のとおりです。

var Count = 0;
// Loop Begins
var Count:Loader = new Loader();
Count.load(new URLRequest("myurl");
addChild(Count);
Count++;
// End Loop

もう 1 つの例は、名前を持ち、最後に番号を追加することです。しかし、どのように

var Count = 0;
// Loop Begins
var MyName+Count:Loader = new Loader(); 
MyName+Count.load(new URLRequest("myurl");
addChild(MyName+Count);
Count++;
// End Loop

要するに:一連の画像を配列にロードし、ロードした画像を後で呼び出してループしたいと考えています。

本当にありがとう!

4

2 に答える 2

2

CASE1コードは、画像をシーケンスでロードする方法です。

CASE2コードは、Synchronizedで画像をロードする方法です。

まず、すべての画像をインポートするURLに順番に名前を付ける必要があります。たとえば、次の形式である必要があります。

www.myURL.com/img0.jpg 
www.myURL.com/img1.jpg 
www.myURL.com/img2.jpg 
www.myURL.com/img3.jpg 
www.myURL.com/img4.jpg 
www.myURL.com/img5.jpg
        .
        .
        .

以下のコードを試してみてください。テストだけです。

CASE1

var   imgLoader:Loader;
var   imgRequest:URLRequest;
var   count:int = -1;
const TOTAL_COUNT:int = 10;
var   imgBox:Array = [];
var   isCounting:Boolean;

function loadImage():void
{
    count ++;

    isCounting = true;

    imgLoader = new Loader();
    imgRequest = new URLRequest();
    imgRequest.url = "www.myURL.com/img" + count +".jpg";
    imgLoader.load(imgRequest);
    imgLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, unloadedImg);
    imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadedImg);

    if(count == TOTAL_COUNT)
    {
          isCounting = false;
          count = -1;
    }
}

function onLoadedImg(e:Event):void
{
    imgLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoadedImg);

    var bmp:Bitmap = e.currentTarget.content;
    bmp.x = Math.random() * width;
    bmp.y = Math.random() * height;
    bmp.width = 100;
    bmp.height = 100;
    this.addChild(bmp);

    imgBox.push(bmp);

    if( isCounting == false) 
    {
        return;
    }

    loadImage();
}

function unloadedImg(e:IOErrorEvent):void
{
    imgLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, unloadedImg);
    trace("load Failed:" + e);
}

loadImage();

CASE2

var   imgLoader:Loader;
var   imgRequest:URLRequest;
const TOTAL_COUNT:int = 10;
var   imgBox:Array = [];

function loadImage2():void
{
    for(var i:int = 0; i<TOTAL_COUNT; i++)
    {
        imgLoader = new Loader();
        imgRequest = new URLRequest();
        imgRequest.url = "www.myURL.com/img" + i +".jpg";
        imgLoader.load(imgRequest);
        imgLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, unloadedImg);
        imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadedImg);
    }
}

function onLoadedImg(e:Event):void
{
    imgLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoadedImg);

    var bmp:Bitmap = e.currentTarget.content;
    bmp.x = Math.random() * width;
    bmp.y = Math.random() * height;
    bmp.width = 100;
    bmp.height = 100;
    this.addChild(bmp);

    imgBox.push(bmp);
}

function unloadedImg(e:IOErrorEvent):void
{
    imgLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, unloadedImg);
    trace("load Failed:" + e);
}

loadImage2();

ロードされた画像にアクセスしたい場合。次のコードを参照してください。それらを配列に入れないと、将来アクセスできなくなります。

for(var int:i=0; i<TOTAL_COUNT; i++)
{
    var bitmap:Bitmap = imgBox[i] as Bitmap;
    trace("index: " + i + "x: " + bitmap.x + "y: " + bitmap.y, "width: " + bitmap.width + "height: " + bitmap.height);
}
于 2012-08-09T04:56:19.120 に答える
1

同じページにいるので:

var imgArray:Array = new Array;
var totalImages:int = 42;
var totalLoaded:int = 0;
var loaded:Boolean = false;

function loadImages():void{
  for(var count:int = 0; count < totalImages; count++){
    var image:Loader = new Loader();
    image.load(new URLRequest("image" + i + ".jpg");
    image.addEventListener(Event.COMPLETE, loaded);
    imgArray.push(image);
  }
}

function loaded(e:Event):void{
  totalLoaded++;
  if (totalLoaded == totalImages){
    loaded = true;
  }
}

function displayImages():void{
  if (loaded){
    for(var i:int = 0; i < imgArray.length(); i++){
      addChild(imgArray[i]);
    }
  }
}
于 2012-08-09T04:26:20.220 に答える