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

携帯Flashでダイナミックテキストの表示ができるようになったらば、テキストじゃなくって画像なんかを表示させたいなぁとか思ってしまうのは世の常。 ってな訳で、自分で用意したグラフィックやムービークリップを携帯Flashに表示させてみましょう。

まず最初に「数字」という名前でムービークリップを作りましょう。すべてのフレームをキーフレームにしておきます。一番上のレイヤーには「action」とかつけてみましょう。 次にレイヤーを追加して、数字とかいう名前にしておきます。これもすべてのフレームをキーフレームにしておき、2フレーム目からフレームひとつにつきそれぞれ数字が1〜0まで入ります。

05-1

入れるのはテキストでも画像でもムービークリップでも構いません。ただ文字の位置をちゃんと合わせておかないと後々で表示位置がおかしくなるので しっかりと合わせておきましょう。そしてactionレイヤーのキーフレームにActionScriptを書きます。

stop();
switch (num) {
case "0" :
gotoAndPlay(11);
break;
case "1" :
gotoAndPlay(2);
break;
case "2" :
gotoAndPlay(3);
break;
case "3" :
gotoAndPlay(4);
break;
case "4" :
gotoAndPlay(5);
break;
case "5" :
gotoAndPlay(6);
break;
case "6" :
gotoAndPlay(7);
break;
case "7" :
gotoAndPlay(8);
break;
case "8" :
gotoAndPlay(9);
break;
case "9" :
gotoAndPlay(10);
break;
} 

上記のActionScriptを全てのキーフレームに書いておいてください。これでムービークリップ「数字」はおしまいです。

つぎに「曜日」という名前でムービークリップを作ります。このム−ビークリップも「数字」と同じように、一番上のレイヤーには「action」とかつけて全てのフレームをキーフレームにしておきます。 レイヤーを追加して「曜日名」とかいう名前にして、2フレーム目から日曜日〜土曜日までのテキストかグラフィック、ムービークリップを入れておきます。

05-2

んで、actionレイヤーの全てのキーフレームに下記のActionScriptを書きます。

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

switch (w) {
case 0 :
gotoAndPlay(2);
break;
case 1 :
gotoAndPlay(3);
break;
case 2 :
gotoAndPlay(4);
break;
case 3 :
gotoAndPlay(5);
break;
case 4 :
gotoAndPlay(6);
break;
case 5 :
gotoAndPlay(7);
break;
case 6 :
gotoAndPlay(8);
break;
} 

これでムービークリップ「曜日」は終了。

あとはそのムービークリップをシーン1に配置して、それぞれにインスタンス名をつけてあげるだけです。曜日に関しては、ムービークリップ「曜日」の中で 曜日を取得し、表示するフレームを指定するようにしてあるので、シーンに配置した際にはインスタンス名をつける必要はありません。

04-3

ここまできたら、ダイナミックテキストの時計でやったように、シーン1のタイムラインを2つにして1フレーム目に…

//時刻の取得
/* ----時間の取得---- */
hours = fscommand2("GetTimeHours");
if( hours<10){
	hours = String(hours);
	hours = "0" add hours;
}else{
	hours=hours;
}
/* ----分の取得---- */
minutes = fscommand2("GetTimeMinutes");
if( minutes<10){
	minutes = String(minutes);
	minutes = "0" add minutes;
}else{
	minutes=minutes;
}
/* ----秒の取得---- */
seconds = fscommand2("GetTimeSeconds");
if( seconds<10){
	seconds = String(seconds);
	seconds = "0" add seconds;
}else{
	seconds=seconds;
}
/* ----時、分、秒をそれぞれ変数に代入---- */
hour1.num = substring(hours, 2, 1);
hour2.num = substring(hours, 1, 1);
min1.num = substring(minutes, 2, 1);
min2.num = substring(minutes, 1, 1);
sec1.num = substring(seconds, 2, 1);
sec2.num = substring(seconds, 1, 1);

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

/* ----年、月、日にちをそれぞれ変数に代入---- */
year1.num = substring(years, 4, 1);
year2.num = substring(years, 3, 1);
year3.num = substring(years, 2, 1);
year4.num = substring(years, 1, 1);
month1.num = substring(month, 2, 1);
month2.num = substring(month, 1, 1);
day1.num = substring(day, 2, 1);
day2.num = substring(day, 1, 1);

2フレーム目に…

gotoAndPlay(1); 

を入れてあげるだけです。

とりあえず、この作製の仕方はどうにもうまく表示できない端末があったりで…。以前、ゆまさん(blogはこちら)より指摘のいただいたものを 自分なりにブラッシュアップしてみました。DoCoMo(SO905i)では無事に動いていることは確認しています。

数字や曜日のムービークリップ内に配置するものをグラフィックやムービークリップにしてあげれば、オリジナルのデザインした数字なんかを表示させることができます。

今回作製したflaファイル