前回の第6回は、Dateクラスを使って時刻を調べ、アナログ時計のムービーとして完成させた。今回は、Dateクラスから日付の情報を取出し、文字列として時計のムービーに表示させよう。
Dateクラスの日付のプロパティ
Dateクラスのインスタンスは、前回使った時刻以外に、日付のプロパティも備えている。よって、Dateインスタンス作成時の日付情報を、取得することが可能だ。Dateクラスのおもな日付のプロパティを、次の表1に掲げる。
表1 Dateインスタンスのおもな日付のプロパティ
プロパティ |
説明 |
date |
Dateインスタンスに設定されたローカル時による日付の日を、1から31までの整数で返す。 |
day |
Dateインスタンスに設定されたローカル時による日付の曜日を、0から6までの整数で返す。0が日曜日で、6は土曜日を示す。 |
fullYear |
Dateインスタンスに設定されたローカル時による日付の年を、4桁の整数で返す。 |
month |
Dateインスタンスに設定されたローカル時による日付の月を、0から11までの整数で返す。0が1月で、11は12月を示す。 |
上記のプロパティを使って、Dateインスタンスから日付情報を取得してみよう。以下のフレームアクション(スクリプト1)を[ムービープレビュー]で試すと、実行時現在の日付の年・月・日がそれぞれ数値で、[出力]パネルに表示される。
たとえば、フレームアクションを実行したのが今年の10月1日だったとすると、[出力]パネルにはつぎのように表示される(図1)。
上記スクリプト1で、月の値を変数nMonthに代入した式において、右辺のプロパティ値に1加算していることに注意してほしい。Date.monthプロパティは、0が1月で11を12月とする整数を返す。したがって、何月かを知りたい場合には、プロパティ値に1加算しなければならない。
TextFieldインスタンスへの文字列の設定
Dateインスタンスから取得した日付を、タイムラインに配置したTextFieldインスタンスに表示したい。前回作成したアナログ時計のムービーを開いて[1]、時計の針のMovieClipシンボル内にTextFieldインスタンスとスクリプトを追加しよう。
まず、時計の針のMovieClipシンボルを[編集]し、[テキストツール]でTextFieldインスタンスを作成する。TextFieldインスタンスには、MovieClipインスタンスと同じように、プロパティインスペクタでインスタンス名を設定する必要がある。ここでは、インスタンス名は"my_txt"としよう。スクリプトでテキストを設定する場合、[テキストの種類]は[ダイナミックテキスト]を選ぶ(図2)。
つぎに、TextFieldインスタンスにテキストを表示するには、TextField.textプロパティに文字列を代入する。文字列以外を設定したい場合には、文字列に変換しなければならない。たとえば、つぎのスクリプトのように、数値をTextField.textプロパティに設定しようとすれば、[コンパイルエラー]が発生する(図3)。
値を文字列に変換したいときには、String()関数に引数としてその値を渡せばよい。たとえば、前記スクリプトで、TextFieldインスタンスmy_txtのTextField.textプロパティにNumber型の変数nYearの値を代入する式は、つぎのように修正する。
さらに、TextFieldインスタンスに表示する日付の形式(フォーマット)も考えよう。たとえば、2007年10月1日であれば、"2007/10/1"と表示したい。つまり、年月日を示す文字列に変換した数字の間に、スラッシュ"/"を挟み込む必要がある。文字列と文字列とを連結するには、加算演算子+を使う[2]。
年・月・日を示す数値が、それぞれ変数nYear、nMonth、nDateに格納されているとすれば、スラッシュ"/"を間に挿入してTextFieldインスタンスmy_txtに表示するステートメントはつぎのとおりだ(図4)。
時計に日付の表示を加える
それでは、前回作成した時計のムービーに、日付の表示の処理をスクリプトとして組込む。時計の針のMovieClipシンボルのフレームアクション(第6回スクリプト3「時計のMovieClipシンボルの第1フレームアクション」)に、ステートメントを追加しよう(スクリプト2)。処理内容は、すでに前節「TextFieldインスタンスへの文字列の設定」で示したとおりである。
TextFieldインスタンスmy_txtに日付を表示するためのステートメントは、MovieClipシンボルのフレームアクションに定義した関数xSetTime()内を3つの構成に分け、該当するパートに加えた。
スクリプト中の//(ダブルスラッシュ)はコメント行区切り記号演算子で、演算子以降の1行はSWFに書出されず、したがってスクリプトとしては無効になる。演算子の名称どおり説明・コメントの記述に用いられるほか、ステートメントを一時的に無効にしてテストするといった使い方もある。
[1] Dateインスタンスから時刻と日付のプロパティ値を取得する処理は、関数xSetTime()本体の最初のパートにまとめた。時刻と日付のデータはともに、同じDateインスタンスから取出している。
[2] 時計の針のアニメーションは、前回第6回で作成したパートだ。今回の日付の表示に当たって、とくに変更や追加はない。
[3] 3つ目のパートでは、TextFieldインスタンスに文字列としてフォーマットを整えた日付が設定される。String()関数が数値を文字列に変換することや、加算演算子+で文字列が連結されることは、すでに前節で説明したとおりである[3]。
[ムービープレビュー]で確認すると、時計の針のアニメーションが現在時刻を示すことに加えて、今日の日付が表示されるようになった(図5)。
次回は、時計に表示する日付のフォーマットを題材に、文字列の操作について学習する。