前回の第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)を[ムービープレビュー]で試すと,実行時現在の日付の年・月・日がそれぞれ数値で,[出力]パネルに表示される。
スクリプト1 Dateインスタンスから年・月・日のプロパティ値を取出して[出力]する
var my_date:Date = new Date();
var nYear:Number = my_date.fullYear;
var nMonth:Number = my_date.month+1;
var nDate:Number = my_date.date;
trace(nYear);
trace(nMonth);
trace(nDate);
たとえば,フレームアクションを実行したのが今年の10月1日だったとすると,[出力]パネルにはつぎのように表示される(図1)。
2007 10 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)。
var my_date:Date = new Date();
var nYear:Number = my_date.fullYear;
my_txt.text = nYear;
値を文字列に変換したいときには,String()関数に引数としてその値を渡せばよい。たとえば,前記スクリプトで,TextFieldインスタンスmy_txtのTextField.textプロパティにNumber型の変数nYearの値を代入する式は,つぎのように修正する。
my_txt.text = String(nYear);
さらに,TextFieldインスタンスに表示する日付の形式(フォーマット)も考えよう。たとえば,2007年10月1日であれば,"2007/10/1"と表示したい。つまり,年月日を示す文字列に変換した数字の間に,スラッシュ"/"を挟み込む必要がある。文字列と文字列とを連結するには,加算演算子+を使う(※2)。
年・月・日を示す数値が,それぞれ変数nYear,nMonth,nDateに格納されているとすれば,スラッシュ"/"を間に挿入してTextFieldインスタンスmy_txtに表示するステートメントはつぎのとおりだ(図4)。
my_txt.text = String(nYear)+"/"+String(nMonth)+"/"+String(nDate);
- ※1
- 前回作成したサンプルファイルは,第6回「Dateクラスで時刻を調べる」の2ページ目からダウンロードできる。
- ※2
- 加算演算子+は,式の演算対象となる項の値が数値か文字列かによって機能が変わる。数値のときは算術の加算になり,文字列であれば本文に示したように連結の機能を果たす。
- なお,演算対象となる式の項は,被演算子またはオペランドと呼ばれる。式は,演算子と被演算子(オペランド)とによって構成される。

