ActionScript 3.0で始めるオブジェクト指向スクリプティング

第7回 Dateクラスの日付と文字列の操作

この記事を読むのに必要な時間:およそ 3 分

前回の第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 年月日のプロパティ値をtrace()関数で[出力]

図1 年月日のプロパティ値をtrace()関数で[出力]

上記スクリプト1で,月の値を変数nMonthに代入した式において,右辺のプロパティ値に1加算していることに注意してほしい。Date.monthプロパティは,0が1月で11を12月とする整数を返す。したがって,何月かを知りたい場合には,プロパティ値に1加算しなければならない。

TextFieldインスタンスへの文字列の設定

Dateインスタンスから取得した日付を,タイムラインに配置したTextFieldインスタンスに表示したい。前回作成したアナログ時計のムービーを開いて※1),時計の針のMovieClipシンボル内にTextFieldインスタンスとスクリプトを追加しよう。

まず,時計の針のMovieClipシンボルを[編集]し,[テキストツール]でTextFieldインスタンスを作成する。TextFieldインスタンスには,MovieClipインスタンスと同じように,プロパティインスペクタでインスタンス名を設定する必要がある。ここでは,インスタンス名は"my_txt"としよう。スクリプトでテキストを設定する場合,[テキストの種類]は[ダイナミックテキスト]を選ぶ図2)。

図2 MovieClipシンボル内にTextFieldインスタンスmy_txtを配置

図2 MovieClipシンボル内にTextFieldインスタンスmy_txtを配置

つぎに,TextFieldインスタンスにテキストを表示するには,TextField.textプロパティに文字列を代入する。文字列以外を設定したい場合には,文字列に変換しなければならない。たとえば,つぎのスクリプトのように,数値をTextField.textプロパティに設定しようとすれば,[コンパイルエラー]が発生する図3)。

var my_date:Date = new Date();
var nYear:Number = my_date.fullYear;
my_txt.text = nYear;

図3 TextField.textプロパティに文字列以外を設定すると[コンパイルエラー]が生じる

図3 TextField.textプロパティに文字列以外を設定すると[コンパイルエラー]が生じる

値を文字列に変換したいときには,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);

図4 TextField.textプロパティに"年/月/日"の形式で日付を設定する

図4 TextField.textプロパティに

※1
前回作成したサンプルファイルは,第6回「Dateクラスで時刻を調べる」2ページ目からダウンロードできる。
※2
加算演算子+は,式の演算対象となる項の値が数値か文字列かによって機能が変わる。数値のときは算術の加算になり,文字列であれば本文に示したように連結の機能を果たす。
なお,演算対象となる式の項は,被演算子またはオペランドと呼ばれる。式は,演算子と被演算子(オペランド)とによって構成される。

著者プロフィール

野中文雄(のなかふみお)

ソフトウェアトレーナー,テクニカルライター,オーサリングエンジニア。上智大学法学部卒,慶応義塾大学大学院経営管理研究科修士課程修了(MBA)。独立系パソコン販売会社で,総務・人事,企画,外資系企業担当営業などに携わる。その後,マルチメディアコンテンツ制作会社に転職。ソフトウェアトレーニング,コンテンツ制作などの業務を担当する。2001年11月に独立。Web制作者に向けた情報発信プロジェクトF-siteにも参加する。株式会社ロクナナ取締役(非常勤)。

URLhttp://www.FumioNonaka.com/

著書

コメント

コメントの記入