1

プログラムで .csv からデータを読み込んで、その内容を特定の方法で表示できるようにしようとしています。そのために URLLoader クラスを使用しようとしています。以下は、ファイルを読み取るための私の関数のコードです

//Instantiate the URLLoader and set up the exception handling associated with it
var loader:URLLoader = new URLLoader();
loader.addEventListener( IOErrorEvent.IO_ERROR, handleIOError );
loader.addEventListener( HTTPStatusEvent.HTTP_STATUS, handleHttpStatus );
loader.addEventListener( SecurityErrorEvent.SECURITY_ERROR,  handleSecurityError );
loader.addEventListener( Event.COMPLETE, handleComplete );

//Next load the options file that will have location of .csv file
loader.dataFormat = URLLoaderDataFormat.TEXT
loader.load(new URLRequest("testData.csv"));
trace("data: " + loader.data);

このコードを実行すると、"data: undefined" というトレースが出力されます。デバッグ時に、URLLoader.load が実際にはローダーのどのフィールドも変更していないことがわかりました。私の理解では、このメソッドはロードされたデータを data プロパティに入れることになっていました。エラーの原因について誰かが何か考えを持っているなら、私は非常に感謝しています。

4

2 に答える 2

5

関数は非同期であるため、dataプロパティにアクセスするコードはhandleComplete関数内に存在する必要があります。load()すぐに戻りますが、実際の実行は並行して行われます。読み込みが完了すると、適切なイベント ハンドラーが呼び出さhandleCompleteれます (この場合)。

于 2012-05-30T00:04:30.263 に答える
0

これは、プログラムで行うべき方法です。基本的には、上記の Torious の言葉のコード形式です。幸運を!

var myTextLoader:URLLoader = new URLLoader();
myTextLoader.addEventListener(Event.COMPLETE, onLoaded);
myTextLoader.load(new URLRequest("myText.txt"));

function onLoaded(e:Event):void {
    trace(e.target.data);
}
于 2012-05-30T15:20:38.407 に答える