FLASHのお勉強 ーケータイ(携帯) de FLASHー

(5) FlashLite2.0 でアナログ時計(時刻アニメ付き)

2007/1/1
 今回はアナログ時計である。 単なる時計では面白くないなと言うことで、何か付加しようと考えた。 写真を背景にして針と文字盤だけの時計にしようかと考えたが、もう一つ物足りない。 そこで、1時とか2時とかの時刻を告げるアニメを付加することにした。 アニメを付加するスクリプトの勉強であって、面白いアニメを作るお勉強ではない(なにしろ、デザイン力イラストレート力に極端に乏しいので)。 したがって、ここで一応付加しているアニメはあくまでも仮に置いてあるものであって、ここは、皆さんの力の見せ所と知恵を絞って欲しい。 音を入れたりしたらもっと面白いかも知れない。
SAMPLE
 このサンプルは、FlashPlayer7でパブリッシュしたもので、早周りさせて、アニメが確認しやすいようにしている。
 携帯用スクリプトは、以下の設定でエラーなくパブリッシュできており、softbank 811SH で無事動くことが確認できている。

携帯用SAMPLE(swfファイル)は、http://flashde.syanari.com/ に。

  flashede.syanari.comのQR-Code
ステージの準備(FLASH8でFlashLite2.0ファイルを作成する場合)
パブリッシュ設定(あらかじめMacromediaのサイトから"fl8_flashlite2_update_jp.exe"をDLしてインストールしておく)
●ステージのサイズを200,200に設定
●パブリッシュの設定ウインドウを開き、バージョンをFlashLite2.0に、アクションスクリプトのバージョンをActionScript2.0に
●Ctrl+Enterでプレビューさせるとデバイス選択画面が出るので、スタンドアローンプレイヤー、一般携帯電話を選択
ステージの準備
●背景色は黒、フレームレートは12fps
●時計は、(37)FLASHでデジタル時計・アナログ時計 を参照のこと
●各時刻で登場する小鳥(そのつもり)はFLASHの描画を用いて、普通に立っている姿と、羽を広げて飛び上がった姿の2種類を描き、birdと名付けたシンボルに6FRAMEずつ表示させるようにする(gifアニメと同じ)
FlashLite2.0対応スクリプト


_root.onEnterFrame = function() {
  myDate = new Date();
  h = myDate.getHours();
  m = myDate.getMinutes();
  s = myDate.getSeconds();
  work();
  if (m == 0 && s == 0) {
    n = h%12;
    jikangoto(n);
  }
};
function work() {
  short._rotation = h*360/12+m*360/12/60;
  long._rotation = m*360/60+s*360/60/60;
  second._rotation = s*360/60;
}
function jikangoto(n) {
  if (n == 0) {
    n = 12;
  }
  for (i=1; i<n+1; i++) {
    mc = _root.attachMovie("bird", "bird"+i, i);
    mc._x = 30;
    mc._y = 10;
    anime(i);
  }
}
function anime(i) {
 pass = getTimer();
 mc.onEnterFrame = function() {
    if (getTimer()-pass>15000) {
      mc.targetx = 250;
      mc.targety = -10;
    } else {
      mc.targetx = 54+30*((i-1)%4);
      mc.targety = 130-30*Math.floor((i-1)/4);
    }
    this._x += (mc.targetx-this._x)/(1.5*i+2);
    this._y += (mc.targety-this._y)/(1.5*i+2);
    if (this._x>245) {
      delete mc.onEnterFrame;
    }
  };
}




時間の取得


関数workを実施

もし、分、秒が0になったら
12時間フォーマットに変換
関数jikangotoを実施


関数work
短針の角度
長針
秒針

関数jikangoto
nが0なら
nを12に


1からnまで
ムービークリップbirdをステージに
初期配置x座標
初期配置y座標
関数animeを


関数anime
タイマー初期値

15秒経過したら
targetxをステージ右外に
targety
そうでなければ
targetx横に4つ並べるための座標
targety3列に並べる座標

targetxに向かって移動(i が大きいものは遅らせる)
targetyに向かって移動
もしxが245以上になったら
mc.onEnterFrameを削除
HOME   お勉強総リスト