- ベストアンサー
再生されるFlashを時間によって変えたい。
現在、クライアントからホームページを見た時間によって、表示されるFlashもしくはjQueryを制作しないうてはなりません。 実際には、午前6時から午後18時までは昼の写真をスライド再生させ、午後18時から午前6時までは夜の写真を再生させるFlash or jQueryが作りたいのですが何か良い方法はないでしょうか? Flashの場合、ActionScriptは2.0を使用します。 利用ソフトはFlash8です。 何か良い方法があればお力をおかしください。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2ですが。。。 > 常に時間を監視して表示に反映させる場合、 > はどうしたら良いのでしょうか? ですから... 回答を読まれていらっしゃらないのでしょうか? 「どのような方法で表示させるのか」という内容を 具体的に提示されないと具体的な回答はできないのです! って。。。 場合によってムービーを作る構造やスクリプトや説明も全て変わるのですよ。 らちが明かないので #2で書いた ○表示方法例1 午前6時から午後18時までは, メインタイムラインの2~201を(ループ?)再生させ 午後18時から午前6時までは, メインタイムラインの202~401を(ループ?)再生させる。 の方法ですると私が勝手に決めて良いのでしょうか? 勝手にそういうことにします。 まず メインタイムラインの フレーム1 のみのキーフレームには 例えば「Now Loading...」という文字を打ちます。 (いきなりロードされていないフレームにジャンプすることはできないので。) そして メインタイムラインの フレーム1 のキーフレーム に次のように書きます。 //---------------------------------------- //再生停止 stop(); //関数「divergenceFunc」の定義 function divergenceFunc():Void { //現在のDateインスタンスを作成 var now_date:Date = new Date(); //時刻を取得 var now_hour:Number = now_date.getHours(); //もし時刻が6以上18未満(17以下)であれば if (now_hour>=6 && now_hour<18) { //フレーム2 から再生 gotoAndPlay(2); } else { //フレーム202 から再生 gotoAndPlay(202); } } //毎フレーム実行するメソッドを定義 this.onEnterFrame = function() { //もしこのFlashが全てロードされたら if (this.getBytesLoaded()>=this.getBytesTotal()) { //この毎フレーム実行するメソッドを削除 delete this.onEnterFrame; //関数「divergenceFunc」を実行 divergenceFunc(); } }; //---------------------------------------- そして, 午前6時から午後18時までに表示させる最終フレームである メインタイムラインの フレーム201 にキーフレームを作って その キーフレーム に次のように書きます。 //--------------------------------- //関数「divergenceFunc」を実行 divergenceFunc(); //--------------------------------- また, 午後18時から午前6時までに表示させる最終フレームである メインタイムラインの フレーム401 にキーフレームを作って その キーフレーム に上と同じく次のように書きます。 //--------------------------------- //関数「divergenceFunc」を実行 divergenceFunc(); //--------------------------------- これが具体的な1つの方法例です。 なお メインタイムラインのフレーム1の「Now Loading...」は 極々簡易的に「ロード中」を示しているだけです。 インジケータが動くような演出をしたい場合は 適当にその辺を検索してみてください。 Google検索「Flash NowLoading」 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&q=Flash+NowLoading
その他の回答 (2)
- BlurFiltan
- ベストアンサー率91% (1611/1754)
「時間(時刻)」などの前に 「どのような方法で表示させるのか」が必要ではないかと思いますよ。 そこを決めなければ回答者としては具体的な回答は書けません。 表示させる方法などバリエーションも含めると無限にありますからね。 ○表示方法例1 午前6時から午後18時までは, メインタイムラインの2~201を(ループ?)再生させ 午後18時から午前6時までは, メインタイムラインの202~401を(ループ?)再生させる。 ○表示方法例2 午前6時から午後18時までは, ムービークリップ「a_mc」を(ループ?)再生させ 午後18時から午前6時までは, ムービークリップ「b_mc」を(ループ?)再生させる。 ○表示方法例3 午前6時から午後18時までは, 識別子「a_mc」のシンボルをライブラリから attachMovie し 午後18時から午前6時までは, 識別子「b_mc」のシンボルをライブラリから attachMovie する。 ○表示方法例4 午前6時から午後18時までは, 外部SWF「a.swf」を loadMovie でロード表示させ 午後18時から午前6時までは, 外部SWF「b.swf」を loadMovie でロード表示させる。 などなどなど… とにかく無数にあります。 さらに, 「表示させている間に時刻の境界を超えた場合はどうするのか?」 ということも考えておかなければ。。。 つまり 「午前6時から午後18時まで」や「午後18時から午前6時まで」という時刻は Flash を表示させた瞬間の時刻なのか? Flash を表示させている間中ずっと監視すべき時刻なのか? ということです。 当然, 前者(表示させた瞬間の時刻)の方がずっと簡単で, 後者(表示させている間中ずっと監視すべき時刻)の方がずっと難しいです。 途中で標示物を切り替える部分も出てきますから。 まずはこの辺を具体的に考える必要があると思います。 なお, ご質問の本題である「時刻によって動作を分岐させること」自体は これを単独で考えるなら簡単なことです。 この程度↓の回答でしたらできますが。 新規ドキュメントを作成し メインのタイムラインのフレーム1にコピペし 「制御」→「ムービープレビュー」するスクリプト例です↓。 //------------------------------------ //現在のDateインスタンスを作成 var now_date:Date = new Date(); //時刻を取得 var now_hour:Number = now_date.getHours(); //もし時刻が6以上18未満(17以下)であれば if (now_hour>=6 && now_hour<18) { //検証出力↓ trace("こんにちは♪ 今は"+now_hour+"時です。"); } else { //検証出力↓ trace("こんばんは★ 今は"+now_hour+"時です。"); } //------------------------------------ 上記スクリプトの //検証出力↓ trace("こんにちは。今は"+now_hour+"時です。"); と //検証出力↓ trace("こんばんは。今は"+now_hour+"時です。"); の部分を 具体的に決めた動作に変えれば良いだけです。 ご存じだとは思いますが Flash で取得する現在の時刻は 閲覧するパソコンに設定してある時刻ですから これを変えると色々な時刻でのシミュレート実験ができます。 (これは JavaScript やその一種である jQuery でも同じです。) この程度の回答であればすぐに書けます。 この「時刻による動作分岐」よりも その先の方が重要であり,難しいことが絡む部分だと思います。
お礼
ご回答ありがとうございます。 早速作業してみようと思います。 浅い知識のため、質問も不十分な書き方で申し訳ありません。 お力をおかしいただきありがとうございます。
補足
表示させる方法まで考えて居ませんでした(汗) もし、常に時間を監視して表示に反映させる場合、はどうしたら良いのでしょうか? 最悪の場合、開いた時間で、表示させる内容を変える方法にしますが、できれば、時間を監視させられたら最高なんです。 何度も補足申し訳ありません。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 >何か良い方法はないでしょうか? とのことですが、その仕様で作るしかないと思います。 Flashであれば時間を取得して6:00~17:59、18:00~5:59でスライドするフレームを制御すればよいでしょうし、 jQueryであれば画像を配列のような形でで持っておいて時間によって利用する画像を変更すれば良いと思います。
お礼
お礼が遅れた事を、まず申し訳ありませんでした。 的確な回答をありがとうございました。
補足
回答頂きありがとうございます! 方法の考え方に関しては何となくですが僕にも想像は出来たんです。 でも、実際の方法に関して知りたかったので、教えて頂ければと・・・。 何か参考ページでも構いません。 宜しくお願いします。
お礼
BlurFiltanさん 補足に不十分な点があったにもかかわらず、きちんと説明頂きありがとうございます。 感謝しています。