- 締切済み
日数、時間指定で、変化させるスクリプト
flashの時間指定についての質問です。 指定した時間(例:○○月○○日の○○時)に、roadMovieをさせたり, gotoAndPlay(フレームへ飛ばす) をさせたりする事は可能なんでしょうか? 今まで調べて見たところ、 http://okwave.jp/qa1901367.html (時刻によって読み込まれるファイルを変更)や、 http://oshiete1.goo.ne.jp/qa2098739.html(曜日指定でボタン表示) で、似たようなものを発見しましたが、 ”○○月○○日○○時に動きを指定” というスクリプトを見つける事は出来ませんでした。 月指定、分数指定まではこの際なくても良いと思っているのですが、 もし可能であれば、 1:○○日後の○○時に動作(roadMovie または gotoAndPlay) 2:○○時間後に動作 のどちらかのスクリプトを教えて頂けると幸いです。 時間取得方法は以下のスクリプトを使っています。 (...と思います。以下はサンプルからそのまま持って来たものです。申し訳ないのですが私はスクリプト初心者ですので、サンプルのコードはいじる事が出来ませんでした。) この時間取得方法を基準に上記の時間指定をしようと考えています。 var load_lv = new LoadVars(); load_lv.onLoad = function() { var array2 = this.date2.split("/"); var event2_date = new Date(parseInt(array2[0], 10), parseInt(array2[1], 10)-1, parseInt(array2[2], 10)); onEnterFrame = function () flashのバージョンは8です。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- perse
- ベストアンサー率74% (113/152)
4フレーム目に書いたスクリプトを _root.stop(); _root.onEnterFrame = function() { if (getTimer()>start+timer) { } else { _root.t1 = Math.ceil((start+timer-getTimer())/1000); } }; とすればカウントダウンしてくれると思います。 カウントするためにはフレーム毎にどれだけ時間が経過したかを知る必要があるので _root.onEnterFrame = function() {} 内に記述しなければなりません。 日数、時間、分、秒のカウントの方法は 時計のカウントダウンする方法 http://oshiete1.goo.ne.jp/qa1736108.html が参考になります。
- perse
- ベストアンサー率74% (113/152)
以下のActionScriptをフレームに記述してください。 //基準となる時間 //例:2007年6月1日 1時5分 BaseYear = 2007; BaseMonth = 6; BaseDate = 1; BaseHour = 1; BaseMinute = 5; BaseSecond = 0; //基準の時間から目的の時間までの間隔(何時間後とか) //例:20分30秒後 addYear = 0; addMonth = 0; addDate = 0; addHour = 0; addMinute = 20; addSecond = 30; //目的の時間取得 //2007年6月1日 1時25分30秒となる my_date = new Date( BaseYear+addYear , BaseMonth-1+addMonth , BaseDate+addDate , BaseHour+addHour , BaseMinute+addMinute , BaseSecond+addSecond ); year = my_date.getFullYear(BaseYear+addYear); month = my_date.getMonth(BaseMonth-1+addMonth); date = my_date.getDate(BaseDate+addDate); hour = my_date.getHours(BaseHour+addHour); minute = my_date.getMinutes(BaseMinute+addMinute); second = my_date.getSeconds(BaseSecond+addSecond); //確認 trace(my_date); _root.onEnterFrame = function() { my_date = new Date(); yy = my_date.getFullYear(); mm = my_date.getMonth(); dd = my_date.getDate(); hh = my_date.getHours(); min = my_date.getMinutes(); sec = my_date.getSeconds(); //目的の時間かどうかチェック if (yy == year && mm == month && dd == date && hh == hour && min == minute & sec == second) { delete _root.onEnterFrame; //実行 Action(); } }; function Action() { //実行させたい処理を記述 trace("実行"); }
補足
とても早くご回答を頂き、大変感謝しています 問題なく動作するようになりました! ありがとうございます! 何度も厚かましく申し訳ないのですが、もうひとつ質問があります。 お教え頂いたスクリプトに、秒数のみのカウント(指定日時までの秒数カウントを付けてみたいのですが、getTimerの指定で可能でしょうか? (もしくは秒数のみカウントではなく、日数、時間、分、秒のカウントも付けてみたいです。) 以下のスクリプトを追記してみたのですが、時間指定の方法が違うのか、かみあわないようです。。。 (2フレーム目のスクリプト) //初期設定を行う start = getTimer(); //現在のタイムを変数「start」に取得 timer = 500 * 1000 //タイマーの長さを設定する変数「timer」を5秒(5000ミリ秒)に設定 (4フレーム目のスクリプト) if (getTimer()>start+timer) { } else { _root.t1 = Math.ceil((start+timer-getTimer())/1000); //残りの秒数をテキストフィールド変数t1に表示 } 上記のスクリプトは、秒数カウントのサンプルから頂いたものですが、 カウントアップ後のアクションは省いています。 もしやり方をご存知でしたら、ご指導頂けると幸いです。