Flash時計の作り方2「時間応用編」(FlashLite1.1)

時計のActionScriptを説明します。

今回も時計の時間部分について説明します。

今回はダイナミックテキストを使わない方法です。

前回よりも少々手間はかかりますが、
レイアウトの自由度が増します。


まず、基本となる数字のムービークリップを作ります。


11~10までの各フレームにそれぞれ0~9までの数字を文字で入力します。
右の画像は1フレーム目、「0」です。

前回は文字の種類は「ダイナミックテキスト」でしたが、今回は「静止テキスト」にします。
静止テキストの場合、わざわざ文字の埋め込み設定をする必要はありません。

ActionScript用レイヤーを新しく作り、各フレームに
  stop();
と入れておきます。



2作った数字のムービークリップを複製しながら、好きなように並べます。

このとき、プロパティでインスタンス名を入れておきましょう。(左画像の赤い丸部分)
半角英数です。

この例では、数字左から、h1、h2、m1、m2、s1、s2のように設定しています。



3そして時計本体のActionScriptです。

この例の場合、一番上のレイヤーの1フレーム目に記述しています。

//AcsionScriptここから
//ローカル時間を取得します。


h = fscommand2("GetTimeHours");//時取得
m = fscommand2("GetTimeMinutes");//分取得
s = fscommand2("GetTimeSeconds");//秒取得

if (h<10) {//時が10以下のとき
  h1 = 0;//表示する10の位は「0」を変数h1に代入
  h2 = substring(h, 1, 1);//時の1文字目を取得し変数h2に代入
  if(h2==0){
  h2=0;
} else {//時間が11以上のとき
 h1 = substring(h, 1, 1);//表示する10の位は時の1文字目を取得
 h2 = substring(h, 2, 1);//表示する1の位は時の2文字目を取得
 if(h2==0){
  h2=0;
 }
}
if (m<10) {//以下、分の設定
 m1 = 0;
 m2 = substring(m, 1, 1);
if(m2==0){m2=0;}
} else {
m1 = substring(m, 1, 1);
m2 = substring(m, 2, 1);
if(m2==0){m2=0;}

}
if (s<10) {//以下、秒の設定
s1 = 0;
s2 = substring(s, 1, 1);
if(s2==0){s2=0;}
} else {
s1 = substring(s, 1, 1);
s2 = substring(s, 2, 1);
if(s2==0){s2=0;}
}

hh1 = h1+1;//数字ムービークリップはフレーム数より表示する数値がひとつすくないため(たとえば1フレーム目に0)変数h1に1加える
tellTarget ("h1") {
gotoAndStop(../:hh1);//h1というムービークリップの変数hh1のフレームでストップ
}

//以下同様
hh2 = h2+1;
tellTarget ("h2") {
gotoAndStop(../:hh2);
}
mm1 =m1+1;
tellTarget ("m1") {
gotoAndStop(../:mm1);
}
mm2 = m2+1;
tellTarget ("m2") {
gotoAndStop(../:mm2);
}
ss1 = s1+1;
tellTarget ("s1") {
gotoAndStop(../:ss1);
}
ss2 = s2+1;
tellTarget ("s2") {
gotoAndStop(../:ss2);
}
//ActionScriptここまで

ちょっと長くて分かりづらいでしょうか?

これで時間が表示されるはずです。