• ベストアンサー

日付表示

Flashで表示した日付を表示したいのですが、 どのようにスクリプトを書けばよろしいでしょうか? 検索エンジン等でも調べたのですが、どうしても わかりませんでしたので、どなたかご教授ください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

#1です。 スクリプトはどのレイヤーにも書けますが、スクリプト専用・描画専用のレイヤーに分けた方が分かりやすくなります。つまり、レイヤー1をスクリプト用、レイヤー2をテキストフィールド用としても構いません。 変数を表示するためのテキストフィールドは、必ずしもスクリプトと同じフレームに置かなければならないという制限はありません。フレーム1のレイヤー1にスクリプト、レイヤー2にテキストフィールドを置いてもいいですし、フレーム1のレイヤー1にスクリプト、レイヤー2の任意のフレームにテキストフィールドを置くこともできます。テキストフィールドはムービーの内容の都合に合わせて、お好きなフレームに配置して下さい。 ただし、スクリプトを設定したフレームより前にテキストフィールドを置いてしまうと、スクリプトを設定したフレームが再生されるまではダイナミックテキストが表示されません。これは、スクリプトが実行される前には、ダイナミックテキストで表示すべき変数が存在しないことになっているためです。 それから、ダイナミックテキストについてですが・・・ Flash MX 以降では、テキストフィールドを選択すると、「プロパティ」パネルにテキストフィールドの属性が表示されます。 まず、テキストフィールドのタイプを決めます。パネル内の左上の方にあるリストボックスで、「ダイナミックテキスト」を選択して下さい。 すると、「プロパティ」パネルの内容がダイナミックテキスト用の内容に変わります。右下の方に「変数」という項目がありますので、ここに表示したい変数の名前を入力します。#1の例ですと、date_string または today です。 なお、「プロパティ」パネルが半分に折りたたまれている(座標やオブジェクトのサイズなどが表示されていない状態)と、「変数」の項目が表示されません。その場合は、「プロパティ」パネルの右下にある▽のマークをクリックしてパネルを展開して下さい。 Flash 5 では「テキストオプション」のパネルで設定します。テキストフィールドのタイプで「ダイナミックテキスト」を選択すると、やはりパネルの内容が変化し、「変数」という項目が出てきます。ここに、表示させたい変数の名前を入力します。 変数を指定する時は、変数が定義されている階層に注意しましょう。メインのタイムラインにスクリプトを設定し、テキストフィールドもステージにあるのでしたら、変数は today と、変数の名前そのものだけで十分です。 しかし、メインのタイムラインにスクリプトを設定し、テキストフィールドが何かのムービークリップの中にある場合は、変数は _root.today というように、変数が指定されている階層の名前を付けて指定する必要があります。 ( ActionScript では、ステージやメインのタイムラインは _root という名前の階層として扱います) ActionScript の細かい文法やムービークリップの階層構造のことなどは、市販の書籍やインターネットの解説サイト等を参考になさって下さい。 またしても長くなってすみませんでした。

umioo
質問者

お礼

本当にありがとうございます。 こんなに細かく説明していただき、無事に表示させることができました。 心より感謝いたします!!

その他の回答 (1)

  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

Date オブジェクトの各メソッドで日付を取得できます。取得した日付を変数に入れておき、これをダイナミックテキストで表示してはいかがでしょう。 簡単なのは、  date_obj = new Date();  date_string = date_obj.toString(); このようにすると、変数 date_string の中に  Mon Mar 15 11:54:02 GMT+0900 2004 という形式で日付と時刻を表す文字列が入ります。この変数をダイナミックテキストで表示する、という方法です。 上記の表示形式がご希望に合わないのでしたら、同じく Date オブジェクトの各メソッドで必要な情報を取得し、ご希望の形式で表示できるように加工してはいかがでしょうか。  //Dateオブジェクトの作成  date_obj = new Date();  //曜日表示用の配列  yobi_name = new Array( "日" , "月" , "火" , "水" , "木" , "金" , "土" );  //今日の年月日・曜日の取得  yyyy = date_obj.getFullYear();  mm = date_obj.getMonth()+1;  dd = date_obj.getDate();  yobi = yobi_name[ date_obj.getDay() ];  //表示する文字列の作成  today = yyyy + "年" + mm + "月" + dd + "日" + " " + yobi + "曜日"; yyyy ・ mm ・ dd ・ yobi に、それぞれ年月日と曜日が入ります。 曜日を取得する getDay(); では、日曜日= 0 、月曜日= 1 、火曜日= 2 ・・・というように、曜日に対応した数字が取得できます。予め曜日名を配列で作っておき、この戻り値を配列のインデックス番号にして参照することで、「○曜日」と表示できるようにしています。 月を取得する getMonth(); は、実際の月よりも1少ない値で返ってきます(おそらく、海外では「数字+月」といった呼び方がないので、曜日と同様に配列と組み合わせて使われることが多いため、1月= 0 というように予め -1 して返されるのではないかと思います)から、「○月」と表示する場合は戻り値に +1 します。 yyyy や mm ・ dd をダイナミックテキストか trace アクションで表示してみると分かりますが、表示されるのは「 2004 」や「 3 」といった、本当に年や月の数字だけです。そこで、これらを使って、today という変数に表示用の文字列を作っています。today の中身は、例えば今日( 2004 . 3 . 15 月曜日)なら、  2004年3月15日 月曜日 このような文字列になります。 あとはテキストツールでダイナミックテキストのテキストフィールドを作り、today を表示するように変数を設定すると出来上がりです。 Date オブジェクトのメソッドでは、年月日の他に時刻も取得できます。また、get*** メソッドでは Flash が再生されているマシンでの時刻を取得できますが、getUTC*** というメソッドを使うとグリニッジ標準時(協定世界時)を取得することもできます。 いずれも使い方は同じです。表示の仕方などは、お好みに合わせて変更して下さい。 なお、例に挙げたスクリプトは、ブラウザで表示する時のインデントの都合上、行頭に全角のスペースが入っています。コピーして使う場合は、これらの全角のスペースを全て半角のスペースかタブに置き換えて下さい。このまま使うとシンタックスエラーになります。

umioo
質問者

補足

大変詳しくありがとうございます。 書き方なんですが、1フレーム目・レイヤー1に上記スクリプトを書いて、 ------------------------------------ date_obj = new Date(); date_string = date_obj.toString(); //Dateオブジェクトの作成 date_obj = new Date(); //曜日表示用の配列 yobi_name = new Array( "日" , "月" , "火" , "水" , "木" , "金" , "土" ); //今日の年月日・曜日の取得 yyyy = date_obj.getFullYear(); mm = date_obj.getMonth()+1; dd = date_obj.getDate(); yobi = yobi_name[ date_obj.getDay() ]; //表示する文字列の作成 today = yyyy + "年" + mm + "月" + dd + "日"+ " " + yobi + "曜日"; ------------------------------------ 1フレーム目・レイヤー2にテキストツールを作成すればいいのでしょうか? また、ダイナミックテキストフィールドの変数設定がわからないので、教えていただけると助かります。 すみません、Flashは使用するのですが、スクリプトが全く駄目なんで・・・。 よろしくお願いいます。

関連するQ&A