PHPプログラマーとして、私はプログラムフローが行ごとに進むという事実に非常に慣れています。何らかの値を返さなければならないfunction1()を呼び出すと、その関数が戻るまでプログラムが続行されないことを知っています。
現在、AIR を使用して AS3 アプリを開発しています。いくつかの条件が満たされている場合は、いくつかの画像をダウンロードする必要があります。その数がわからないため、次のような For を使用しています。
for (var w:int=0; w < newData_array[2]['content'].length; w++ ) {
for (var j:int=0; j < oldData_array[2]['content'].length; j++ ) {
if((oldData_array[2]['content'][j]['id'] == newData_array[2]['content'][w]['id']) && (oldData_array[2]['content'][j]['last_mod'] != newData_array[2]['content'][w]['last_mod'])){
//need to download a image...
}
}
}
ご覧のとおり、各配列の各要素を比較するだけです(newData_arrayとoldData_array)。条件が満たされた場合、何かをダウンロードする必要があります。そのためにURLloaderを使用しています。ご存知のように、この関数は非同期であり、リスナーを追加すると、ダウンロードが完了するとイベントがトリガーされます。問題は非常に明確です。 urlloader は for サイクルを停止しません (PHP に似た言語で期待されるように) 保存するタイミングがわからないため、大量の画像を同時にダウンロードして災害を発生させるだけです。したがって、どうしてもリスナーを使用する必要がありますが、この種の手順にあまり慣れていないため、かなり行き詰まっています。
ディスクへの保存ルーチンには興味がありません。その部分はほぼ完了しています。これを機能させるために、このアルゴリズムをどのように構築する必要があるかを理解したいだけです。