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

第6回 Dateクラスで時刻を調べる

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

前回の第5回は,イベントリスナーを使って,時計の針を回転するアニメーションについて学習した。今回は,Dateクラスを使って時刻を調べ,時計の針のアニメーションを完成させる。

Dateインスタンスをつくる

時計をつくるには,現在の時刻が調べられなければならない。日付や時刻を扱うのは,Dateクラスである。クラスを操作するには,原則として,シンボルと同じように,インスタンスを作成する必要がある。

もっとも,シンボルとは異なり,[ライブラリ]からドラッグ&ドロップでクラスのインスタンスはつくれない。ActionScriptのクラスのインスタンスは,スクリプトにより生成する。そのシンタックス(文法)は,つぎのとおりだ。

new クラス名([引数])

newというのは,クラスのインスタンスを作成するときに必ず用いられる演算子だ。その後に続けて,インスタンスがほしいクラス名を記述する。そして,丸括弧()の中に,必要に応じて引数(パラメータ)を指定する。

なお,「引数」の文字を括っている角括弧[]は,ヘルプやドキュメントの約束ごととして,オプションであることを示す。引数は,ひとつとはかぎらない。複数ある場合には,カンマ(,)区切りで指定する。今回,Dateクラスで今現在の時刻を調べるためには,引数は渡さない。

したがって,Dateインスタンスは,つぎのように生成する。

new Date()

もっとも,これだけでは,Dateインスタンスは使えない。なぜなら,メモリに残らないからだ。たとえば,フレームアクションに,つぎのようなステートメントを書いたとしよう。

1;

文法的には,何の誤りもない。Flash Playerは1という数値を認識する。そして,すぐに忘れてしまう。この1という数値を後で使うためには,値をメモリしておかなければならない。オーソドックスな方法は,変数に代入することだ。

var nMyNumber:Number = 1;

これで,変数nMyNumberから,いつでも値1が取出せる。Dateインスタンスも,同じようにメモリする必要がある。これも,やはり変数を使うのが定石だ。

var 変数:クラス = new クラス名([引数])

クラスのインスタンスを格納する変数は,そのクラスで型指定する。Dateインスタンスの接尾辞は,"_date"である。よって,Dateインスタンスは,つぎのようなステートメントで生成する。

var my_date:Date = new Date();

これで,Dateインスタンスを操作して,現在時刻を調べることができる。

Dateクラスのプロパティ

Dateインスタンスは,メモリ上の存在だ。つまり,シンボルのインスタンスのように,直接見ることはできない。まずは,Dateインスタンスを,trace()関数で[出力]してみよう。

スクリプト1 Dateインスタンスをtrace()関数で[出力]する

var my_date:Date = new Date();
trace(my_date);

[ムービープレビュー]を試すと,[出力]パネルにはステートメントを実行したときの日時情報が,つぎのようなフォーマットで表示される図1)。

Wed Oct 17 00:00:00 GMT+0900 2007

図1 Dateインスタンスのtrace()関数による[出力]結果

図1 Dateインスタンスのtrace()関数による[出力]結果

もちろん,Dateインスタンスが,このような文字列そのものだという訳ではない。trace()関数で[出力]をするときに,インスタンスの情報が表示用に変換されて文字列になるだけである。Dateクラスにはさまざまなプロパティやメソッドがあり,それらを用いて日時情報を取得・設定したり,変更することができる。

時刻についての情報は,次の表1に掲げるプロパティで取得・設定することが可能だ※1)。

表1 Dateインスタンスのおもな時刻のプロパティ

プロパティ説明
hoursDateインスタンスに設定されたローカル時による時刻の時を,0から23までの整数で返します。
millisecondsDateインスタンスに設定されたローカル時による時刻のミリ秒を,0から999までの整数で返します。
minutesDateインスタンスに設定されたローカル時による時刻の分を,0から59までの整数で返します。
secondsDateインスタンスに設定されたローカル時による時刻の秒を,0から59までの整数で返します。

それでは,上記プロパティ表1を使って,時分秒を取出してみよう。以下のフレームアクションを実行すると,スクリプト実行時の時・分・秒が,それぞれ数値で[出力]パネルに表示される。

スクリプト2 時分秒のプロパティ値をtrace()関数で[出力]する

var my_date:Date = new Date();
var nHours:Number = my_date.hours;
var nMinutes:Number = my_date.minutes;
var nSeconds:Number = my_date.seconds;
trace(nHours);
trace(nMinutes);
trace(nSeconds);

たとえば,フレームアクションを実行したときの時刻が0:12:34であれば,[出力]パネルにはつぎのように表示される図2)。

0
12
34

図2 時分秒のプロパティ値をtrace()関数で[出力]した結果

図2 時分秒のプロパティ値をtrace()関数で[出力]した結果

※1
ActionScript 2.0/1.0と同じように,DateクラスのメソッドgetHours()やgetMilliseconds(),getMinutes(),getSeconds()などを使って,時刻の情報を取得することもできる。しかし,表1のプロパティの方が,扱いやすいだろう。

著者プロフィール

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

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

URLhttp://www.FumioNonaka.com/

著書

コメント

コメントの記入