- ベストアンサー
時間ごとに背景が変化するFlash
時間ごとに変化するFlashを作りたいのですが。 どうしたら良いでしょう。 例えば。 6:00~14:00まで太陽 14:00~21:00まで夕日 21:00~6:00までお月様 みたいな感じにするにはどうしたら良いでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Flashのバージョンも, パブリッシュするSWFのバージョンも, 使用するActionScriptのバージョンも書かれていらしゃいませんし, また状況が少しわかりにくいです。 > 例えば。 6:00~14:00まで太陽 14:00~21:00まで夕日 > 21:00~6:00までお月様 まずFlashの構造作成からですが, 「太陽」,「夕日」,「お月様」 の絵や画像を, ムービークリップの中の フレーム1,フレーム2,フレーム3,に描くか配置するかします。 ムービークリップ内 フレーム1 …「太陽」 フレーム2 …「夕日」 フレーム3 …「お月様」 そのムービークリップをメインのムービーの一番下のレイヤーに配置します。 そして, 6:00~14:00 だと, そのムービークリップ内のフレームを フレーム1 に進めて, 14:00~21:00 だと, そのムービークリップ内のフレームを フレーム2 に進めて, 21:00~6:00 だと, そのムービークリップ内のフレームを フレーム3 に進めるようにすると, 時刻によって表示される絵が変わるものが作成できます。 一般的にFlashは長時間見る物ではありません。 別に長時間見ていてもかまいませんが, たいていの場合,1つのFlashを見ている時間は数秒~数分です。 つまり普通の場合, Flash はサイトのページに貼りついていて, 1つのページを表示させている時間というのはそんなに長くはありません。 したがって,その普通の場合は, 上で作成したムービークリップを選択して, そのムービークリップ自体に次のようなスクリプトを書けばできます。 ---------------------------------------- // このムービークリップがロード(表示)されたとき onClipEvent (load) { // // 今現在 Dateオブジェクト myDate を作成 myDate = new Date(); // myDate から時刻を取得して 変数 myHour に代入 myHour = myDate.getHours(); // // もし myHour が6以上で14未満のとき if (myHour>=6 && myHour<14) { // このムービークリップ内を フレーム1 に進めて停止 this.gotoAndStop(1); // もし myHour が14以上で21未満 とき } else if (myHour>=14 && myHour<21) { // このムービークリップ内を フレーム2 に進めて停止 this.gotoAndStop(2); // それ以外のとき } else { // このムービークリップ内を フレーム3 に進めて停止 this.gotoAndStop(3); } } ---------------------------------------- これは, そのムービークリップが表示されたときの時刻で決定でそれ以降は動きません。 もしFlashを数時間以上見つづけるような普通ではない場合は, 上のスクリプトの1行目(注釈行を含めると最初の2行), // このムービークリップがロード(表示)されたとき onClipEvent (load) { を次のように変更します。 // 1フレーム進む時間ごとに毎回実行 onClipEvent (enterFrame) { こうすると, 長時間見つづけた場合でも見ている途中で画像が変わります。 Flashのバージョンも, パブリッシュするSWFのバージョンも, 使用するActionScriptのバージョンもわかりませんので, なるべく無難に Flash5 以上で使用できるスクリプトや構造にしました。 スクリプトのバージョンは ActionScript1.0 です。 私が Flash 5 を説明のターゲットとして選んだ理由は, Dareオブジェクト(FlashMX2004以降は Dateクラス)が, Flash 5 以上でないと使えないからです。 それ以下の Flash 4 しかお持ちでない場合は, Flash 単独では無理ですから,JavaScript や CGI や PHP などとの連携を考えます。
お礼
ありがとうございます! ただ、開いた時間帯によってアニメを変化させたいだけなんです^^