外部ファイルの文字コードを変更できない場合の対処法
Flash は、UTF-8 (または Shift_JIS) 以外の日本語文字コードで作成された外部ファイル読み込むと文字化けを発生します。
何らかの事情で外部ファイルの文字コードを変更できない場合は、PHP や CGI で UTF-8 (または Shift_JIS)に変換したデータを出力させて読み込みます。 PHP の場合は、mb_convert_encoding() で変換すると良いでしょう。
*注
データの出力以前に他のいかなる出力も行ってはなりません。
データがURL形式の場合
query.txt (読む込むデータ)
name=data1&addr=data2&tel=data3
query.php (Flash から起動する phpスクリプト)
query.fla (ActionScript の記述)
// _root
// └addr_mc
// └data_mc
// └name, addr, tel (Dynamic Text)
// MC of addr_mc
onClipEvent(load) {
this.loadVariables('query.php');
// this.name, this.addr, this.tel にそれぞれの値が読み込まれます。
}
onClipEvent(data) {
this.data_mc.name = this.name;
this.data_mc.addr = this.addr;
this.data_mc.tel = this.tel;
}
データがCSV形式の場合
data.txt (読む込むデータ)
name1,addr1,tel1
name2,addr2,tel2
name3,addr3,tel3
data.php (Flash から起動する phpスクリプト)
data.fla (ActionScript の記述)
// _root
// └addr_mc
// └data_mc
// └name, addr, tel (Dynamic Text)
// MC of addr_mc
onClipEvent(load) {
this.loadVariables('data.php');
// this.data に値が読み込まれます。
}
onClipEvent(data) {
lines = new Array();
line = new Array();
lines = this.data.split(';');
for(i in lines) {
line = lines[i].split(',');
mc = 'data_mc' + i;
this.data_mc.duplicateMovieClip(mc, i);
this[mc].name = line[0];
this[mc].addr = line[1];
this[mc].tel = line[2];
this[mc]._y = (this.data_mc._y + this.data_mc._height) * i;
}
}