私はActionScriptで気まぐれな癖があります。インデックスをコールバック関数に渡す必要があります。ここでActionScript3で奇妙なイベントリスニング
は私のコード
for (var i:Number = 0; ((i < arrayQueue.length) && uploading); i++)
{
var lid:ListItemData=ListItemData(arrayQueue[i]);
var localI:Number= new Number(i); // to copy?
var errorCallback:Function = function():void { OnUploadError(localI); };
var progressCallback:Function = function(e:ProgressEvent):void { lid.progress = e; OnUploadProgress(localI); };
var completeCallback:Function = function():void { Alert.show('callback'+localI.toString()); OnUploadComplete(localI); }; // localI == arrayQueue.length - 1 (when called)
Alert.show(localI.toString()); // shows current i as expected
lid.fileRef.addEventListener(Event.COMPLETE, completeCallback);
lid.fileRef.addEventListener(ProgressEvent.PROGRESS, progressCallback);
lid.fileRef.addEventListener(HTTPStatusEvent.HTTP_STATUS, errorCallback);
lid.fileRef.addEventListener(IOErrorEvent.IO_ERROR, errorCallback);
lid.fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorCallback);
lid.fileRef.upload(url, 'File');
}
私のコールバックへのインデックスに合格する方法上の任意のアイデアですか? .upload
はブロックされません。
'target'は私に必要なものではない' FileReference'を取得するだけなので、 'target'は私のためには機能しません。 –
しかし、異なる 'lid'sの' FileReference'も異なっています。少なくともそれらをArrayに格納し、コールバックに必要なものを見つけることができます。 – dragonfly
また、デリゲートまたはクロージャのサンプルを表示することもできます。しかし、それを使うのは悪い考えです。 – dragonfly