過去にActionScriptにてCSVファイルを読み込む方法を書いた記事があるのですが、問題があることを発見したので、ここにて修正します。

前記事
http://ameblo.jp/kind1010/entry-10052042749.html


前の記事のソースコードでCSVを読み込んだ場合、LoadVarsがサーバーとのやり取りを終了する前に次の処理に移行してしまいます。
たとえば、onDataイベントハンドラの適当なところと、loadメソッドを呼び出した後にtrace文を入れると、処理速度の関係でloadメソッドの後のtrace文の方がonDataイベントハンドラのtrace文より早く出力されます。

lv = new LoadVars();

lv.onData = function (src) {
    // ファイルを読み込んでから・・・
    trace("onData handler");
};

lv.load("filename.csv");

// その後の処理をして欲しい
trace("After load method");

出力結果After load method
onData handler

っとまぁこんな感じになってしまうので、読み込み処理が終わるのを待たねばならんのですよ。

その方法として、読み込みだけで1つのフレームを使用した上で処理前に停止させ、処理が終了したら再生をつづけるという手法をつかいます。(他にももっと効率のいい方法はあるかもしれませんが、私にはワカラナイ)

ってことでその方法で問題に(多分)対応したソースです。
this.stop(); // 一度MCを停止させる

// 文字列の置換
function replaceStr(in_str, from_str, to_str) {
    str_array = in_str.split(from_str);
    return str_array.join(to_str);
}

// 改行コード置換用
System.useCodepage = true// SJISで読み込む
var CR = String.fromCharCode(13);
var LF = String.fromCharCode(10);

_global.data_in = new Array();
csv_data = new LoadVars();

// データを取得
csv_data.onData = function (src) {
    if (src != undefined)  {
        // 改行コードを揃える
        src = replaceStr(src, CR + LF, CR);
        src = replaceStr(src, LF, CR);

        // 行に分割
        cols = src.split(CR);

        // 1行ずつ読み込み(ヘッダを飛ばす)
        for (i=1; i < cols.length; i++) {
            // 要素に切断
            rows = cols[i].split(",");
            // 取得した値の代入
            _global.data_in.push(rows);
        }
    } else {
        trace("Error:データが読めなかった");
    }
    //停止させたMCを再生させる
    this.curmovie.play();
};

// CSVファイルを読み込む
csv_data.curmovie = this// 制御するMC
csv_data.load("ファイル名.csv"); // ファイルを読み込む

これを1つのフレームに書いて、読み込んだデータの使用は次のフレームから行ってください。

大きな違いは1行目でMCを一度停止させ、38行目で処理の終了によってMCが再生されるまで待っているところです。
MCは42行目で与えてますが、これは後々クラス化しようと思ってこうしただけで、38行目で直接指定してもこの場合は構いません。
あと、ちょっと変更して35行目あたりで値をグローバル変数data_inに2次元配列で代入してます。別にデータ形式は自由にしていただいてもなんら問題はありません。

これなら安定してCSVファイルも読み込めるかと。ただやっぱり「"」の処理を行ってないので、それだけは何とかしないとなぁと思います。