FC2ブログ
スポンサーサイト
--.--.-- (--:--) スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
アナログ時計を作る(回転)
2005.12.07 (22:35) [ Action Script ]時計trackback(0)comment(0)
前回「アナログ時計を作る」の続きです。
記述したアクションスクリプト(以下AS)を読み取り
シンボルを回転させる事を学びます。
前回MC"時計"に記述したASです。

onClipEvent (enterFrame) {

obj = new Date();
jisin._rotation = (obj.getHours())*30+obj.getMinutes()/2;
funsin._rotation = obj.getMinutes()*6;
byousin._rotation = obj.getSeconds()*6;

}


オレンジで色が付けられた部分は、前回の「ローカルの時間を取得」する
ためのASです。値を受け取る「箱」となるデータオブジェクト"obj"を用意
してから、obj.getHours()などとして目的の値(ここでは"Hours"で時)という流れです。


ではそれぞれ時、分、秒の値をどのように利用しているのかを考えます。
3行目~5行目を見てみます。"jisin" "funsin" "byousin"はそれぞれ
MC"時計"に所属(階層)しているMC"時針" MC"分針" MC"秒針"
インスタンス名です。
それぞれの後には_rotationと続いています。
この_rotationは、「インスタンス(MC)の回転角度」を示しています。
例えば5行目のbyousin._rotationであれば、
「"byousin"の回転角度」を示しているわけです。
ここで言う「回転角度」とはそのインスタンス(ここではMC"秒針"のこと)
の中心を回転の中心とした度数表現(0~360)による値のことを言います。



5行目では

byousin._rotation = obj.getSeconds()*6

と、「=」より右の値を左に代入しろ、と命令しているので
この「回転角度」にobj.getSeconds()*6を代入することが分かります。
obj.getSeconds()は冒頭で話しました通り、
ローカルの時間を取得した0~60(正確には限りなく60に近い値)までの値
なので、これを6倍にした0~360の値を代入する事になります。
1秒あたり6度増え、60秒(=1分)で一周するって訳です。

同様に残りの3行目、4行目をみてみますと、4行目は

funsin._rotation = obj.getMinutes()*6;

これは5行目と同様に、ローカルから取得した0~60(正確には限りなく60に
近い値)までの値を6倍にし、0~360の値を分針の回転角度に代入しています。

では3行目です。

jisin._rotation = (obj.getHours())*30+obj.getMinutes()/2;

多少式が複雑になっていますが、要は二つのオレンジ部の値を足して
時針の回転角度に代入しています。
一つ目のオレンジ部分を見てみます。

(obj.getHours())*30

obj.getHours()はローカルより取得した0~12(正確には限りなく12に近い値)
です。この値を30倍にし、0~360の値としています。
では、時針の回転角度にはこれだけを代入すれば良いように思われます。
しかしこのままでは、一時間毎にローカルの値が変わり、針が30度回転
することになります。
つまり、3時でも3時半でも3時59分でも時針が90度を向いたままって訳ですね。
これはまずいです。
よって二つ目のオレンジ部obj.getMinutes()/2でローカルの分の値を取得し
さらに1/2にした0~30の値を足してやれば、分の値にも応じた時針の連続した
0~360の値を得ることが出来ます。
これを時針の回転角度に代入しているわけです。


以上でASの読み取りは終わりです。
次回は、このムービーを携帯電話の待ちうけFlash用に作り直す事について
考えていきます。
スポンサーサイト
prevhome next












トラックバックURL
→http://netlostman.blog31.fc2.com/tb.php/28-7e530df6
home
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。