【コラム】

クリエイティブ初心者のためのFlash講座

19 ActionScriptでデジタル時計を作成 -Dateオブジェクトから日時を取り出す

    伊藤のりゆき(NORI)  [2010/03/09]
    「FLash CS4」体験版ダウンロードはこちらから
    「Adobe CS4」購入はこちらから

    前回、DateクラスからDateオブジェクトを生成し変数にする(代入という)方法を紹介したが、今回はそのDateオブジェクトから実際に日時を取り出してみよう。なおソースファイルはこちらからダウンロードできる。

    Dateオブジェクトから、日時を取り出す

    Dateオブジェクトには、日時のデータが備わっている。たとえば、nowというDateオブジェクトから「年」を知りたいときは次のようにする。(※ソースファイル dw_test_02.fla)

    var now:Date = new Date();
    trace(now.fullYear);

    nowとfullYearの間にある「.(ドット)」は、「■の中の●●」という意味の区切り文字で、この場合、「変数 now の中にあるfullYear」となる。ムービープレビューすると、次のように出力パネルに表示されるはずだ。このとき、nowは、fullYearや後で紹介するその他のプロパティと呼ばれる変数をグループ化して持っている。

    2010と出力される

    2010が年であることを示すために、「2010年」と表示するなら、tarce()の行を次のように変更する。(※ソースファイル dw_test_03.fla)

    trace( now.fullYear + "年" );

    2010年と出力された

    trace()の中を見ると、"(ダブルクォーテーション)で囲まれた部分をリテラル値、あるいはリテラル文字という。これは、そのまま表示する文字であるということだ。この場合、"年"がそれにあたる。

    片方が文字の場合、「+」を使用するとその前後を繋げることが可能だ。ここでは、now.fullYear で置き換えられる 2010 と"年"を「+」でつなげて、"2010年" を出力したというわけだ。(※2010の型はNumber、"年"の型はStringだが、trace()は自動的にNumberをStringに変換するため、+でつなげることができる。)

    他の情報も取得する

    Dateオブジェクトから年以外の、月や日などを取得する方法も同様の手順でOKだ。オンラインヘルプにある内容を表にしてみた。

    Dateオブジェクトの代表的なプロパティ

    プロパティ名 意味
    fullYear 4桁の年を表す数値
    month 月を表す0~11の数値(0…1月、1……2月、11……12月)
    date 日付けを表す1~31の数値
    day 曜日を表す0~6の数値
    hours 時間を表す0~23の数値
    minutes 分を表す0~59の数値
    seconds 秒を表す0~59の数値

    ※プロパティとはオブジェクト内にある変数のことで、上記プロパティは、すべてNumberという型になっている。

    上記を参考に図のように出力パネルに出すASは、例のようになる。(※ソースファイル dw_test_04.fla)

    今日の日付(例 2010.1.20)が出力される

    var now:Date = new Date()
    trace(now.fullYear + "." + (now.month+1) + "." + now.date)

    解説をすると、「now.fullYear」は、4桁の年を示す。同じく、now.monthは、月の数字を返すが、0から始まるので1加算するように「+1」を計算式として追加した。文字の場合と異なり「+」記号の前後が数値ならば普通の四則演算を実行する。

    最後の、「now.date」は日付を返す。また、これらの間を「 "." 」でつなげるために、「 + "." +  」とそれぞれの値の間に入れている。

    変数を上手に利用してプログラムを整理

    ここで、少しプログラムを見やすく整理しよう。ここまで、次のようなプログラムを書いた。(※ソースファイル dw_test_04.fla)

    var now:Date = new Date()
    trace(now.fullYear + "." + (now.month+1) + "." + now.date)

    実は、これをもっと分かりやすく書くことができる。それが、次のものだ。(※ソースファイルdw_test_05.fla)

    var now:Date = new Date()
    var year:Number = now.fullYear
    var month:Number = now.month+1
    var date:Number = now.date
    trace( year + "." + month + "." + date )

    これを前のものと比べると、違いがいくつかある。

    • varで始まる行数がふえた。
    • trace()の内容がシンプルになった

    注目して欲しいのは、最後の出力するところがシンプルになったことだ。そのために、行数は増えているが、1行を短く、シンプルな機能にしているので理解しやすいはずだ。むしろ、trace()が整理された分、改造がしやすくなっているはずだ。

    たとえば「2010年1月20日」と出したい場合、trace()の行を次のようにすればよい。

    trace(year+ "年" + month + "月" + date + "日")

    ※ソースファイル dw_test_05.flaのコメント(最初の//)を外してムービープレビューしてみて欲しい。

    「2010年1月20日」の表記で今日が出力された

    今回、Dateオブジェクトであるnowから日付情報を取り出すことができたので、次はそれをhtmlテキストにして表示してみよう。次回からは、このtrace()をhtmlテキスト表示に変更してみよう。

    伊藤のりゆき(NORI)
    有限会社トゴル・カンパニー代表。ロクナナワークショップ講師。Flashアクセシビリティを得意とし、ライターとしてFlash関連書籍や雑誌記事の執筆を行うほか、AdobeTVでも解説。共著の「ActionScript3.0辞典」が発売中。また、先頃、写真家として初の写真集「「Snap or Nothing写真集」( iTunes AppStoreにて)が発売された。内容のリクエストはTwitter(nori_togoru)まで。

    関連記事

    関連サイト

    関連したタグ

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン