記事表示
FlashLite1.1上での時計表示
ANGEL PLAYERをFlashLite1.1化するため資料を引っ張り出したのでメモメモ
FlashLite1.1では配列変数が使えないため擬似的な方法を使います
(曜日程度ならばswitchとかでも良いんですががが)
week0 = "Sun";
week1 = "Mon";
week2 = "Tue";
week3 = "Wed";
week4 = "Thu";
week5 = "Fri";
week6 = "Sat";
のように文字+数字のものをあらかじめ作っておき
week = eval("week" add fscommand2("GetDateWeekday"));
とすれば配列のように曜日文字列が取得できます
evalを使うところがポイントです
ここでは使ってませんが
疑似配列のデータが何個あるかを取得したい時は
num_Week = 0;
while( eval("week" add num_Week) ne ""){num_Week++}
としておけばnum_Weekは6となります
nullやundefinedは使えませんので「""」としてあります
空白のデータも扱いたい時は
終わりを表す文字列を決めてやればOKです
上記weekの疑似配列に
week7 = ""
week8 = "ArrayEnd"
を追加して
num_Week = 0;
while( eval("week" add num_Week) ne "ArrayEnd"){num_Week++}
とするとnum_Weekは7となります
chr関数で通常では使わない文字を指定した方が確実かもしれません
上記の曜日文字列変換に加えて・・・・
year = fscommand2("GetDateYear");
mon = fscommand2("GetDateMonth");
if (mon < 10) { mon = "0" add mon}
day = fscommand2("GetDateDay");
if (day < 10) { day = "0" add day}
str_Date = year add "/" add mon add "/" add day add "(" add week add ")";
としてやると2010/01/01(Fri)のような桁あわせを含めた年月日を作れます
FlashLite1.1で文字列をくっつけるときは
+ でなく add を使います
時間は
hour = fscommand2("GetTimeHours");
if (hour < 10) { hour = "0" add hour}
min = fscommand2("GetTimeMinutes");
if (min < 10) { min = "0" add min}
sec = fscommand2("GetTimeSeconds");
if (sec < 10) { sec = "0" add sec}
str_Time = hour add ":" add min add ":" add sec;
となります
あとはダイナミックテキストをステージ上に配置して
プロパティ内の変数にstr_Dateやstr_Timeと指定してやれば表示されます
この方法はAS3.0では廃止されたので判らない人がいるかもしれませんねー
あと、デバイスフォントを使わない場合はテキスト埋め込み指定を忘れずに
FlashLite1.1では時間取得にfscommand2を使用しますが
これは秒単位までしか時間が取得できません
Dateオブジェクトのような1/1000秒単位を使いたい場合は
getTimer()を併用する必要があります
昔に作ったマビノギの携帯用MG表の時計が等間隔で動かせているのは
getTimer()を併用して解決しているためです
(マビノギの時計を作ったことがある人しかわかりませんかそうですが)