アプリ版:「スタンプのみでお礼する」機能のリリースについて

Flash初心者です。PHPスクリプトは多少組める程度です。
現在、Flashであらかじめ用意しておいた%をテキストに,区切りで保存しています。txtファイルには地域別に1日~31日までの%を記述してあります。
テキストは読込めたのですが、splitでうまく分割できません。日別(本日の日にち)で出力させたいのですが配列が不慣れです。どなたか教えてください。

//文字コード設定の変更
System.useCodepage = true;
//現在月日の取得
now_date=new Date();
tmpYoubi = "日月火水木金土";
month = now_date.getMonth()+1;
day = now_date.getDate();
weekday = tmpYoubi.charAt(now_date.getUTCDay());

//率の取得
this.loadVariables("sa" + "_" + month + "." + "txt");
ritu = sapporo.split(",");
this.loadVariables("se" + "_" + month + "." + "txt");
ritu = sendai.split(",");

sapporo =ritu[day];
sapporo.text = "sapporo";

stop ();

A 回答 (1件)

こちらのご質問に気づかず,


もう1つの「Flash 外部テキスト読み込み 配列」の方に回答した者ですが,

> //率の取得
> this.loadVariables("sa" + "_" + month + "." + "txt");
> ritu = sapporo.split(",");
> this.loadVariables("se" + "_" + month + "." + "txt");
> ritu = sendai.split(",");

ここに問題がありすぎると思います。

loadVariables で外部txtファイルを読み込んで,
即,ritu = sapporo.split(","); のように
そのデータを操作することは不可能です。
そんなにすぐには外部テキストを読み込めません。
読み込まれていないデータの処理は不可能です。
loadVariables ではなくて,
LoadVarsクラスのメソッドを使うべきだと思います(Flash MX以降)。

あと,

> ritu = sapporo.split(",");
> ritu = sendai.split(",");

このように,同じ ritu という変数に違う値を代入しても,
値が順次更新されていくだけで,
最後の ritu = sendai.split(","); しか値が残りません。

それと

> sapporo =ritu[day];
> sapporo.text = "sapporo";

これがイミフメイです。
sapporo というインスタンス名のダイナミックテキストに,
ritu[day] を表示させたいのではないかと推測しますが,
それだと,もっと単純に,

sapporo.text=ritu[day];

で行けますよ。


スクリプトから想像するに,
例えば「sa_1.txt」には,

sapporo=53,20,31,81,13,89,56,21,45,69,89,91,63,46,54,58,…

というような形のデータが入っていて,
「se_1.txt」には,

sendai=41,88,22,83,47,12,78,69,71,20,87,56,47,58,71,23,…

というような形のデータが入っているのですよね。
以上のように想像してみて,
書かれているスクリプトを書き替えてみました。
次のようにすればうまく行くと思います。



------------------------------------------
// まず先にストップ
stop();
//文字コード設定の変更
System.useCodepage = true;
//現在月日の取得
now_date = new Date();
tmpYoubi = "日月火水木金土";
month = now_date.getMonth()+1;
day = now_date.getDate();
weekday = tmpYoubi.charAt(now_date.getUTCDay());
//
//---率の取得-------
// 読み込んだ個数カウンタの初期値を設定
var count = 0;
// LoadVars インスタンスの作成
myLV = new LoadVars();
//
// 1つのファイルがロードされたとき
myLV.onLoad = function(Success) {
// 読み込みに成功したら
if (Success) {
// 個数カウンタの値に1を加算
_root.count++;
// もし個数カウンタが2になれば
if (_root.count == 2) {
// ユーザ定義関数 showData を実行
showData();
}
}
};
//
// myLV に外部データのロード
myLV.load("sa"+"_"+month+"."+"txt");
myLV.load("se"+"_"+month+"."+"txt");
//
// ユーザ定義関数 showData() の定義
function showData() {
// 配列 ritu の作成(二次元配列)
var ritu = new Array();
ritu[0] = myLV.sapporo.split(",");
ritu[1] = myLV.sendai.split(",");
// テキストの表示
sapporo.text = ritu[0][day-1];
sendai.text = ritu[1][day-1];
}
-------------------------------------------


ご質問で書かれているスクリプトの大きな問題は,split ではありません。
ロード待ち処理が抜けているということと,
無意味に同じ変数に違う値を次々に代入していっているということです。
    • good
    • 0
この回答へのお礼

sassakun様ご丁寧な回答誠にありがとうございます。助かりました。
配列がいまだ不慣れで最初理解に困りましたが、何度も見ているうちに少しずつわかってきました。本当に感謝しております!!

お礼日時:2007/01/15 16:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!