dポイントプレゼントキャンペーン実施中!

Flash Lite 1.1 ベースで、
携帯待ち受け用のアナログ時計を制作しています。
現在は秒針の動き一秒に6度動くように設定しているのですが、
一秒に6度動く様な「カチッカチッ」と言う動きではなく、
その間の動きも滑らかに動くように設定したいと考えています。

色々なサイトで詳細を検索したいのですが、
満足のいく解答を探す事ができませんでした。
興味のある方など解答をいただけると幸いです。

<現在使用しているソース:12fps>
hr = fscommand2("GetTimeHours");
min = fscommand2("GetTimeMinutes");
sec = fscommand2("GetTimeSeconds");
hour._rotation = hr*30+min*0.5;
minute._rotation = min*6;
second._rotation = sec*6;

A 回答 (2件)

どこかで少しは微妙に違う部分(誤差)が出てきてしまいますが,


私だと次のようにすると思います。


---例えばフレーム1に書くスクリプト--------------------
// 時・分・秒 の取得
hr = fscommand2("GetTimeHours");
min = fscommand2("GetTimeMinutes");
sec = fscommand2("GetTimeSeconds");
//
// 時針 と 分針 を回転
hour._rotation = hr*30+min*0.5;
minute._rotation = min*6+sec/10;
//
// もし前回の秒が今の秒と違えば
if (last_sec<>sec) {
// その時のミリ秒時間(時刻ではない)を取得
time = getTimer();
}
//
// 秒針 を回転
second._rotation = (sec+(getTimer()-time)/1000)*6;
//
// 次回のために今の秒を記録しておく
last_sec = sec;
//
//--- 以下は Flash Lite のバグ回避 ---
hour._xscale = 100;
hour._yscale = 100;
minute._xscale = 100;
minute._yscale = 100;
second._xscale = 100;
second._yscale = 100;
----------------------------------------------


---例えばフレーム2に書くスクリプト--------------------
gotoAndPlay(1);
----------------------------------------------



「秒の変わり目が ○.000 秒とは限らない」など,
すごく微妙なことを言われると困りますが,
だいたいはこれで滑らかに動くと思います。


Flash Lite のバグ回避 の部分は,
「_rotation で針を回転させるとだんだん針が長くなったり短くなったりする」
という,Flash Lite 1.x のバグを回避するためのものです。
    • good
    • 0
この回答へのお礼

BlurFiltan 様
ご丁寧な回答ありがとうございます。
記述いただいたスクリプトを実装してみたところ、
イメージに近い内容で動かす事ができました。
丁度、バグ回避の件も悩んでいた部分だったので、
二重に助かりました。ありがとうございます。
とっても助かりました。

お礼日時:2009/02/19 22:41

単なるアイデア書きですいません。



フレームを止めずループさせて秒の間を補完すればできませんか。12fpsで必ずしも正確な6度の12分の1とは行かないとは思いますが、ある程度滑らかにはできると思います。
    • good
    • 0
この回答へのお礼

hige_mario 様
回答ありがとうございます。
hige_marioさんのアイデアのように、
フレームの設定で動かす方法も手段の一つですね。
とても参考になります。

お礼日時:2009/02/19 22:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!