- ベストアンサー
時計の:を点滅させたい
action script1.0で時計を作っています。 9:10とかの:を秒に合わせて点滅させるにはどのようなスクリプトを 記述すればいいんでしょうか? 9(時)と10(分)はダイナミックテキストで作っていて :はムービークリップで表示させています。 タイムラインを使った方法は、秒とズレるので スクリプト(多分setInterval?)で記述すると思うのですが、使用方法が よくわかりません。 おしえてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
おそらく、onEnterFrame か onClipEvent(enterFrame) を利用し、Date オブジェクトで時刻を常時取得して表示していると思います。 Date オブジェクトでは秒も一緒に分かるはずですから、例えば秒が偶数だった時にはコロン(” : ”)のムービークリップを非表示にし、奇数の時だけ表示する、としてはいかがでしょう。 偶数か奇数かは、秒を 2 で除算した余りを見ると分かります。 スクリプトでは、% 演算子で剰余を求めることができます。 お使いの Flash のバージョンや、表示する部分をどのように作っていらっしゃるかがよく分かりませんので、さしあたって、次のような構成のムービークリップシンボルのインスタンスがステージにあるものとして考えます。 時計のムービークリップ ├ 時間を表示するテキストフィールド ├ 分を表示するテキストフィールド └ コロンのムービークリップ(インスタンス名” colon_clip ”) 偶数秒の時にコロンを非表示に、奇数秒の時にコロンを表示するスクリプトは、大体、次のようになります。 このスクリプトは、時計のムービークリップの”インスタンスに”記述してください。 (↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください) /********************************************************/ onClipEvent(enterFrame) { //現在の時刻を取得 now_time = new Date(); //時間と分および秒を取得 hour = now_time.getHours(); minute = now_time.getMinutes(); sec = now_time.getSeconds(); //時刻を表示 /* Flash Player 6 以上の場合は、 ここに時刻をダイナミックテキストに出力するスクリプトを書く */ //秒が偶数の時にコロンを非表示に、奇数の時に表示する colon_clip._visible = Boolean( sec % 2 ); } /********************************************************/ 上記のスクリプトでは、変数 hour と minute に時間と分が入ります。 Flash Player 5 でパブリッシュする場合は、テキストフィールドに表示する変数にこれらの変数を指定して表示してください。 Flash Player 6 以降は、テキストフィールドを制御する TextField オブジェクトが持っている” text ”というプロパティを書き換えることでテキストフィールドに表示する内容を変更します。 例えば変数 hour の値を表示するには、テキストフィールドにインスタンス名を付けて、 インスタンス名.text = hour; というように書きます。 Flash Player 5 と同様にテキストフィールドに変数名を指定しても問題なく動作しますが、TextField オブジェクトが登場した Flash Player 6 以降は、変数名を指定して表示する方法は非推奨になりました。 ********************************** 細かい表示については作品に合わせて対応していただくとして、考え方のポイントは、秒を取得し、これが偶数か奇数かによってコロンのムービークリップの表示・非表示を切り替えることです。 上記のスクリプトでは、 //秒が偶数の時にコロンを非表示に、奇数の時に表示する colon_clip._visible = Boolean( sec % 2 ); ↑この部分が、今回の肝になります。 取得した秒は、変数 sec に入ります。 sec % 2 で偶数か奇数かを判断し、この結果を Boolean というアクションでブール値( true または false )に変換して、ムービークリップの表示 / 非表示を決める _visible プロパティに設定します。 sec % 2 の計算結果は、sec の値が偶数の時は 0 、奇数ならば 1 です。 つまり、sec の値を同時に表示してみると分かりますが、秒が奇数の時にだけコロンのムービークリップ” colon_clip ”が表示されます。 実際はフレームレートの関係で微妙にズレることがありますけれど、人間の目では分からない程度です。 作例とは逆に、偶数の時に表示・奇数の時に非表示にしたい場合は colon_clip._visible = ! Boolean( sec % 2 ); このように変更してください。 今回の本題ではないので詳しく触れませんが。 変数の値を表示したりコロンのムービークリップに指示を出す時は、ターゲットパスの誤りにご注意ください。
お礼
ご返信ありがとうございます。 こんな簡単な方法があったんですね。 丁寧でわかりやすい解説ありがとうございます。