au携帯電話でFlash時計を作ってみる。

ということを、仕事の片手間(?)にやってみた。いわゆる、待ち受けFLASHですね。
昔から携帯画像は自作なので(笑)今回は動画をやってみたって感じです。
アナログ時計にしてみました。

  1. 画像作成ソフトを使って時計の部品を作成する。
    1. 時計の台
    2. 時計の長針
    3. 時計の短針
    4. (時計の秒針)携帯電話のCPUスペックからみてない方がよさげ
  2. できあがった部品をそれぞれPNG形式で書き出す。
  3. フラッシュを起動する。
    1. ファイル-読み込み-ステージに読み込み(Ctrl+R)を使って入れ込む
    2. 1フレーム目に部品をゴソッと入れちゃう。
    3. 長針と短針をそれぞれ選択し、「シンボルに変換」タイプは『ムービークリップ』にする。
      1. 短針を選択し、プロパティ内にある。「インスタンス名」を「hour」とする。
      2. 長針を選択し、プロパティ内にある。「インスタンス名」を「minute」とする。
    4. 1フレーム目にAction Scriptを書き込む
//時の取得
hr = fscommand2("GetTimeHours");
//分の取得 
min = fscommand2("GetTimeMinutes");
//秒の取得 
sec = fscommand2("GetTimeSeconds");
//年の取得 
y = fscommand2("GetDateYear");
//月の取得 
m = fscommand2("GetDateMonth");
//日の取得 
d = fscommand2("GetDateDay");
//アナログ時計の表示 (注意!!!)
hour._rotation = -(hr*60+min)/4;
minute._rotation = -(min*60+sec)/10;
//曜日の取得
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;
}
//桁の追加 
if (hr<=9 and hr>=0) {
	hr = 0 add hr;
}
if (min<=9 and min>=0) {
	min = 0 add min;
}
if (sec<=9 and sec>=0) {
	sec = 0 add sec;
}
  1. 2フレーム目の上で右クリック、「キーフレームの挿入」を選択
  2. 2フレーム目を選択しActionScriptを記入
gotoAndPlay(1);
  1. 最後に、パブリッシュ設定から「Flash Light 1.1」にして、パブリッシュ。

出来上がったデータはWebにアップロードするか、SDカードに入れちゃいましょう。


さて、今回の作成の注意点ですが、ふつうの時計を作るのなら、

//アナログ時計の表示 (注意!!!)
hour._rotation = -(hr*60+min)/4;
minute._rotation = -(min*60+sec)/10;

この部分の設定を変更しなければなりません。
上記の計算の意味は、逆回転をさせています。
時間の方は、24時間表記のアナログ時計にしたので、
時間(Max23)×60分+現在の分 という計算、最大値は23×60+60(※本当は59)=1440になります。つまり、1440分で一周360度させる訳なので、1440/360=4が出てくるので、4分ごとに1度回ればいいわけです。
ちなみに12時間で一周するふつうの時計の場合は、
(hr*60+min)/2 でOKだと思います。また、CPUに負荷をかけたくない場合は、1時間毎に12/360度回転するようにhr*30でもOKかな?
分針についても同じことがいえますが、ちょっと考えればすぐに答えが出ると思うので割愛

出来上がるとこんな感じ……。現在待ち受けに設定中