Adobe Flash Professional CS5 を使用して Web サイトを作成しています。
for ループ内で URLLoader.load(path) を使用してテキスト ファイルの内容を読み込もうとしています。
パスは反復ごとに変更されます。
イベント ハンドラー メソッドからデータをトレースすると、最後のパスのテキスト ファイルのコンテンツのみが返されます。
for がループした後でのみ、イベント ハンドラー メソッドを呼び出しているようです。
コード:
var myData:URLLoader = new URLLoader();
myData.addEventListener(Event.COMPLETE, onLoaded);
function onLoaded(e:Event):void
{
trace(myData.data);
}
for (var o = 0; o < filesArray.length; o++)
{
for (var p = 0; p < filesArray[o].length; p++)
{
if (filesArray[o][p] == "category.txt")
{
path = "C:\\inetpub\\wwwroot\\" + filesArray[o][0] + "\\" + filesArray[o][p];
myData.load(new URLRequest(path));
trace(path);
}
}
}
これは出力です:
C:\inetpub\wwwroot\0001\category.txt
C:\inetpub\wwwroot\0002\category.txt
C:\inetpub\wwwroot\0003\category.txt
C:\inetpub\wwwroot\0004\category.txt
C: \inetpub\wwwroot\0005\category.txt
ジュエリー
おっしゃる通り、「ジュエリー」は「C:\inetpub\wwwroot\0005\category.txt」の中身です。
「onLoaded」メソッドを次のような文字列を返すように変更しようとしました:
function onLoaded(e:Event):String
{
return myData.data.toString();
}
それは for ループの中にあります:
trace(myData.load(new URLRequest(path)));
次に、これを出力として取得しました。
undefined
C:\inetpub\wwwroot\0001\category.txt
undefined
C:\inetpub\wwwroot\0002\category.txt
undefined
C:\inetpub\wwwroot\0003\category.txt
undefined
C:\inetpub\wwwroot\0004\category .txt
未定義
C:\inetpub\wwwroot\0005\category.txt
また、for ループを while ループに変換しようとしましたが、同じ結果でした。
なぜそのように振る舞うのですか?
URLLoader.load メソッドが for ループ内でうまく機能せず、それについて何もできない場合、FileStream などのファイルから単純なテキストを読み取る別の方法はありますか? (私は ActionScript を初めて使用し、C# から来ました)
前もってありがとう、
フレディ。