携帯Flashの作製方法 デジタル時計を作ろう1

携帯Flashの待ち受けを色々と作っていくと、なんだか色々と作ってみたいなぁとかいう気持ちがムクムクと大きくなりがち。たとえば時計とか…。となったら思ったが吉日。 さっそくやってみましょう。ActionScriptを使用しますが、いちいち書くのが面倒およびScriptのコト分からんぞなもし…なんて人は、このページの最後の方で落とせるflaファイルを使っちゃえばもうバッチグ〜!

とりあえずはやることは簡単。まずはシーン1のタイムラインにキーフレームを追加して2コマにします。分かりやすいようにレイヤーには「action」とかつけておきましょう。 で、レイヤーを追加して、そこにはテキトーに「時間」とか書いておきましょう。

それで「時間」レイヤーのほうに、ダイナミックテキストで00と数字を打ってみましょう。それが、時間、分数、秒数ぶん。3つ必要になります。

そしたらば、そのダイナミックテキストにそれぞれ変数をつけてあげます。時間のテキストには「h」、分数のテキストには「m」、秒数のテキストに「s」をつけるのが一般的みたいですが、 正直なんでも構いません。shadowrinとかいう変数にしても、あなたが好きなあの娘の名前をつけても大丈夫。まあ、普通はそんなことやめた方がいいんで、 おとなしく「h」「m」「s」とつけましょう。

02-2

これでほとんど完成間近。あとはactionレイヤーの2つのキーフレームにActionScriptを書くだけ。そのActionScriptですが、 まず1フレーム目に…

/* ----時間の取得---- */
hours = fscommand2("GetTimeHours");
if( hours<10){
	hours = String(hours);
	hours = "0" add hours;
}
h = hours;

/* ----分の取得---- */
minutes = fscommand2("GetTimeMinutes");
if( minutes<10){
	minutes = String(minutes);
	minutes = "0" add minutes;
}
m = minutes;

/* ----秒の取得---- */
seconds = fscommand2("GetTimeSeconds");
if( seconds<10){
	seconds = String(seconds);
	seconds = "0" add seconds;
}
s = seconds;

つぎに2フレーム目に…

gotoAndPlay(1); 

と書けば完成。

1フレーム目のActionScriptは、まずfscommand2("GetTimeHours")で携帯から時間を取得してきます。 それをhoursに代入して、そのhoursをイコールでhに代入します。if〜以下の文は、hoursの値が1桁だった場合(10未満)に、 表示位置がずれないように、頭に0を追加する命令が書いてあります。分、秒に関しても それぞれ"GetTimeMinutes"、"GetTimeSeconds"で携帯より取得するようになっています。if〜以下の命令もやってることは同じです。そして2フレーム目のgotoAndPlay(1)で、 1〜2フレームを繰り返させ、秒数のカウントを行います。1〜2フレーム間が 1秒以上かかってしまうと、秒数が正しく動きません。飛び飛びになってしまいます。重いムービーなどを使用すると泣きをみるはめになってしまいます。

パブリッシュしてみましょう!…なんですが、このActionScriptで使われているfscommand2ってのは、携帯Flash用なんで、このままPCで見ても 確認ができないんですよ、オ〜ノォ〜。というわけで、色々と手をつくして携帯にダウンロードさせてみましょう。google先生で調べれば、どうにかなるはずっ。

ここまできたら、ついでに年と月、日にち、曜日も表示させましょう。やりかたは時間と同じようにダイナミックテキストで00と数字を打って、 それぞれに変数をつけてあげます。今回は年のテキストには「y」、月のテキストには「mo」、日にちのテキストには「d」、曜日のテキストには「w」 とでもつけてください。

02-2

次に、actionレイヤーの1つ目のキーフレームに追加でActionScriptを書くだけ。まずは…

/* ----年の取得---- */
years = fscommand2("GetDateYear");
y = years;

/* ----月の取得---- */
month = fscommand2("GetDateMonth");
if (length(month)==1){
	month='0' add substring(month,0,1);
}else{
	month=month;
}
mo = month;

/* ----日にちの取得---- */
day = fscommand2("GetDateDay");
if (length(day)==1){
	day='0' add substring(day,0,1);
}else{
	day=day;
}
d = day;

と書けば年、月、日にちはオッケー。ちなみにif〜と書かれている部分は、月や日にちを取得してきた際に、1桁の数値だった場合に頭に「0」を ついかするような命令が書いてあります。で、曜日…

/* ----曜日の取得---- */
w = fscommand2("GetDateWeekday");

/* ----曜日名に変換---- */
switch (w) {
case 0 :
w = "sun";
break;
case 1 :
w = "mon";
break;
case 2 :
w = "tue";
break;
case 3 :
w = "wed";
break;
case 4 :
w = "thu";
break;
case 5 :
w = "fri";
break;
case 6 :
w = "sat";
break;
}

ちなみに曜日の部分は

wtitle = fscommand2("GetDateWeekday");

/* ----曜日名に変換---- */
if(wtitle == 0) {
	w = "sun"
} 
if(wtitle == 1) {
	w = "mon"
} 
if(wtitle == 2) {
	w = "tue"
} 
if(wtitle == 3) {
	w = "wed"
} 
if(wtitle == 4) {
	w = "thu"
} 
if(wtitle == 5) {
	w = "fri"
} 
if(wtitle == 6) {
	w = "sat"
} 

これでもオッケー!…なのですが、Scriptとしては、if文を使用すると処理が少し重くなるので お勧めはしないです。

これで携帯Flashは完成。あっと言う間にできてしまいました。

ですが、このやり方だと、きっちりとデザインをしたときなどに、ちょっと問題がでてきます。また特定の端末で、曜日などが表示されないことも起こります。 私の携帯が思いっきりそうです。それについて&解消方法については「携帯Flashの作製方法 デジタル時計を作ろう1-2」で 解説します。

今回作製したflaファイル