1

ファイルから 50 枚の画像をランダムに取得し、それらを配列にプッシュするコードが少しあります。ここで、配列からランダムに 350 回プルする必要があります。for ループの代わりにタイマーを使用して、配列から画像を取得しています。配列を使用せず、ファイルから直接画像をループする限り、私のコードは正常に動作します。しかし、それは非常に遅く、悪い形です。配列の.load以外は全部できると思います。私はそれを機能させることができないようです。「#1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません」または「1067: Array 型の値が無関係な型の flash.net:URLRequest に暗黙的に強制されています」というエラーが表示されます。私はこれらのメッセージの要点を理解していると思いますが、配列から URLRequests を引き出す方法を理解できないようです。お願いします、

var imgLoader:Loader; 
var imgSource:URLRequest; 
var imgArrayer:Array = new Array(); 
var imgNum:uint; 
var timer1Count:uint; 
var thumbFade:Tween; 
var layerCount:uint = 0;  



for(var i:uint = 0; i < 50; i++) {
    imgNum = Math.random() * _imgCount;
    imgSource = new URLRequest("thumbsFinal/img"+imgNum+".jpg"); 
    imgArrayer.push(imgSource);
}


var myTimer:Timer = new Timer(_imgTrTime, _imgTrInt); 
    myTimer.addEventListener(TimerEvent.TIMER, timedFunction);
    myTimer.start();


function timedFunction(e:TimerEvent):void{
    imgLoader.load(imgArrayer);
    thumbFade = new Tween(imgLoader, "alpha", Regular.easeIn, _thumbFaderB, _thumbFaderF, _thumbFaderSpd, true);
    addChildAt(imgLoader, layerCount);
    imageAdjust();
    timer1Count++;
    layerCount++;


        if(timer1Count == _scrnFadeTimer) {
            screenFade();
        }
        else if(timer1Count == _txtDeploy){
            textTween();
        } 
}
4

1 に答える 1

1

このビットは次のようになります。

for(var i:uint = 0; i < 50; i++) {
    imgNum = Math.floor(Math.random() * _imgCount); 
    imgSource = new URLRequest("thumbsFinal/img"+imgNum+".jpg"); 
    imgArrayer.push(imgSource);
}

350回プルするビットは次のようになります。

imgLoader.load(imgArrayer[Math.floor(Math.random() * (imgArrayer.length))]);

そのタイマーで350回呼び出されました

于 2010-02-16T23:56:17.077 に答える