• ベストアンサー

時刻の設定と取得について

あるFLASHファイル(例えば、kihon.swf)を用意します。そのFLASHファイルのシーン1レイヤー1フレーム1からフレーム10まで特定の時刻(*時*分*秒)を設定し、またローカルマシンの常に新しい時刻(*時*分*秒)を取得するようにします(時刻の表示はしません)。この時、ローカルマシンの時刻が設定した時刻であれば、シーン1レイヤー1フレーム11からを表示します。なお、シーン1レイヤー1フレーム10とフレーム100は、フレームアクションgotoAndPlay("シーン 1", 1)です。 上記のことを行うには、どのような方法をとればよろしいでしょうか。 使用ソフトは、FLASHMXです。よろしくお願いします。

noname#24173
noname#24173
  • Flash
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
noname#35109
noname#35109
回答No.2

かなりお久しぶりな感じです。 たしか,いつも Flash のプロジェクタでかなり特殊なものを開発されていらっしゃる方ですよね。 状況があまりよく理解できませんので良い例とは言えない気がしますが, フレーム1 に書くスクリプト例です。 ---------------------------------- // 0時25分56秒 を設定 h1 = 0; m1 = 25; s1 = 56; // 18時25分8秒 を設定 h2 = 18; m2 = 25; s2 = 8; //フレーム11 へ行ってonEnterFrameを消す関数の定義 function gotoEleven() { gotoAndPlay(11); delete (this.onEnterFrame); } //1フレーム進む時間ごとに毎回以下を実行 this.onEnterFrame = function() { //変数 nowTime に時刻オブジェクトを設定 nowTime = new Date(); //変数 h に時刻を取得 h = nowTime.getHours(); // 変数 m に分を取得 m = nowTime.getMinutes(); //変数 s に秒を取得 s = nowTime.getSeconds(); //もし h1時m1分s1秒であれば if (h == h1 && m == m1 && s == s1) { //上の gotoEleven() を実行 gotoEleven(); //もし h2時m2分s2秒であれば } else if (h == h2 && m == m2 && s == s2) { gotoEleven(); } else { //ココにそれ以外の場合の動作を記入 //特に何もなければelseは無記入 } }; ---------------------------------- こんな感じでしょうか? ==================================== 毎正時というのは, ちょうど0時,ちょうど1時,ちょうど2時… ということですか? それが限定でしたら,上のようにごちゃごちゃはしません。 ---------------------------------- //1フレーム進む時間ごとに毎回以下を実行 this.onEnterFrame = function() { //変数 nowTime に時刻オブジェクトを設定 nowTime = new Date(); // 変数 m に分を取得 m = nowTime.getMinutes(); //変数 s に秒を取得 s = nowTime.getSeconds(); //もし 0分0秒であれば if (m*60+s == 0) { gotoAndPlay(11); delete (this.onEnterFrame); } else { //ココにそれ以外の場合の動作を記入 //特に何もなければelseは無記入 } }; ---------------------------------- こんな感じになると思います。 上の2つとも, 随時,そのときの時刻を取得するので, Flash を見ているときに,指定時刻を通過したら,フレーム11に行きます。 開いたときにちょうど指定時刻であったらという場合ではありません。 開いたときにちょうど指定時刻の場合は, 「this.onEnterFrame = function() {」 と, その最後の閉じカッコ 「};」 と, 「delete (this.onEnterFrame);」を消してください。 >> シーン1レイヤー1フレーム1からフレーム10まで >> 特定の時刻(*時*分*秒)を設定し と書かれている部分が,いちばんわからない点です。 あまり,状況がわからないので,上のスクリプトも書き方が変かもしれません。

noname#24173
質問者

お礼

お返事ありがとうございます。 いつも詳しく教えてくださりありがとうございます。 御回答の方法が希望することです。 なお、   シーン1レイヤー1フレーム1からフレーム10まで   特定の時刻(*時*分*秒)を設定し  と書かれている部分が,いちばんわからない点です。 ということについては、おそらく  "シーン1レイヤー1フレーム1からフレーム10まで" の部分に疑問を感じていらっしゃるのではないかと思います。これは、フレーム1だけで解決できる?ことでしょうが、私はFLASHファイル作成時に10フレームを1つの単位とすることが多く、このようにさせていただきました。 また質問させていただいたときにはよろしくお願いします。

その他の回答 (1)

  • suzuko
  • ベストアンサー率38% (1112/2922)
回答No.1

参考URLの「Enter」の記事のようなことでしょうか?

参考URL:
http://wolves.mo-blog.jp/school/cat1617639/index.html
noname#24173
質問者

お礼

お返事ありがとうございます。 また、お礼の言葉が遅れまして申し訳ございません。 教えてくださった参考URLを見させていただきましたが、希望する主要な点(※)に関してはそうだと思います。希望することと違うと思われる点は、  1.設定する時刻は複数あるが、移動する任意のフレームは同じ(例えば、毎正時に設定し、ローカルマシンの時刻が毎正時であれば、フレーム11に移動)。  2.設定し、条件分岐によって処理する時刻は、全ての時刻でなく、一部(例えば、毎正時)。 もう少し詳しく(各フレームのActionScriptの記述)理解したいのですが、教えてくださいませんか。 よろしくお願いします。 ※  ・特定の時刻を設定し、またローカルマシンの常に新しい時刻を取得する  ・ローカルマシンの時刻が設定した時刻であれば、任意のフレームへ移動する

関連するQ&A

  • 日付と時刻の取得、ムービークリップの読み込みについて

    あるFLASHファイル(例えば、hizuketozikoku.swf)を用意します。(?)の部分にどのような記述をすれば、(?)のフレームアクションによってローカルマシンの常に新しい日付と時刻(*月*日*曜日*時*分*秒)を取得し、また取得した日付と時刻に対応するライブラリのムービークリップを指定する場所に読み込ませる(例えば、1月1日日曜日1時1分1秒の場合は、gatuに1gatu、nitiに1niti、youbiにnitiyoubi、ziに1zi、hunに1hun、byouに1byouを読み込ませる)ことができますか。 使用ソフトは、FLASHMXです。よろしくお願いします。 ※ hizuketozikoku.swf  シーン1   レイヤー7 フレーム1 インスタンス名:byou   レイヤー6 フレーム1 インスタンス名:hun   レイヤー5 フレーム1 インスタンス名:zi   レイヤー4 フレーム1 インスタンス名:youbi   レイヤー3 フレーム1 インスタンス名:niti   レイヤー2 フレーム1 インスタンス名:gatu   レイヤー1 フレーム1 フレームアクション(?)  ライブラリ   レイヤー1からレイヤー7のムービークリップ(例えば、シンボル1からシンボル7)   1月から12月のムービークリップ(例えば、1gatuから12gatu)   1日から31日のムービークリップ(例えば、1nitiから31niti)   日曜日から月曜日のムービークリップ(例えば、nitiyoubiからgetuyoubi)   1時から24時のムービークリップ(例えば、1ziから24zi)   1分から60分のムービークリップ(例えば、1hunから60hun)   1秒から60秒のムービークリップ(例えば、1byouから60byou)

    • ベストアンサー
    • Flash
  • 読み込まれた外部ムービーからのコントロールについて

    下記のファイルなど(※)を用意します。 (?)の部分にどのような記述をすれば、(?)のボタンアクションによってyomikomu.exeのシーン2フレーム1を表示させられますか。 使用ソフトは、FLASHMXです。よろしくお願いします。 ※ My Documentsフォルダ  yomikomu.exe   シーン1    レイヤー2 フレーム1・15 インスタンス名:yomikomareru    レイヤー1 フレーム15 フレームアクションgotoAndStop("シーン 1", 10)    レイヤー1 フレーム6 フレームアクション_root.yomikomareru.gotoAndPlay(6)    レイヤー1 フレーム1 フレームアクションloadMovie("/gaibu/yomikomareru.swf", "yomikomareru")   シーン2    レイヤー3 フレーム1・15    レイヤー2 フレーム1・15 インスタンス名:yomikomareru    レイヤー1 フレーム15 フレームアクションgotoAndStop("シーン 2", 12)    レイヤー1 フレーム11 フレームアクション_root.yomikomareru.gotoAndPlay(11)    レイヤー1 フレーム1 フレームアクションloadMovie("/gaibu/yomikomareru.swf", "yomikomareru")  gaibuフォルダ   yomikomareru.swf    シーン1     レイヤー2 フレーム11・15     レイヤー2 フレーム6・10 ボタンアクション(?)     レイヤー2 フレーム1・5     レイヤー1 フレーム15 フレームアクションgotoAndPlay("シーン 1", 11)     レイヤー1 フレーム10 フレームアクションgotoAndPlay("シーン 1", 6)     レイヤー1 フレーム5 フレームアクションgotoAndPlay("シーン 1", 1)     レイヤー1 フレーム1

    • ベストアンサー
    • Flash
  • 基本的なことなんですが、、、なぜかできない。(FLASHムービー)

    FLASHのシンボルムービーを作成しました。 10フレームくらいの簡単なものです。 シーン上に上記のムービーを貼り付けたのですが、フレームの都合上、1-2フレームしか使えないので、 とりあえず2フレーム分だけ貼り付けて、2フレーム目の方のアクションに this.gotoAndPlay(2); というように一つ前のフレームに戻るアクションをつけました。 ですが、なぜか2フレーム目でとまってしまいます。 それ以外にアクションはまだつけてないんですが。。。 このムービーのレイヤーを削除すると3フレーム目まで行くようになりました。 なぜでしょうか???

  • ボタンのアクションについて

    flashの初心者です。 シーン1とシーン2を作り、シーン2の中に、文字&ボタンインスタントを一つのフレームに入れ、モーショントゥイーンをかけました。 そして、その中のボタンインスタントにアクションを入れました。 on (release) {gotoAndPlay(350);} ボタンを押し話したときに、350(シーン2)のフレームへ飛んで再生するように設定しました。 しかし、ちゃんと作動してくれません。 シーン2の205からスタートしてしまいます。 シーン1はフレーム数は145まで入ってます。 よく見ると、この145と205を足すと350になります。 つまり、シーン1からシーン2にかけて350番目と言う様になってしまいます。 だから、アクションを on (release) {gotoAndPlay(495);} にすると、きちんと動いてくれます。 シーンを分けているときは、こう言うように足さないといけないのでしょうか? シーン2の350と言うように設定はできないのでしょうか? on (release) {gotoAndPlay("シーン2"350);} では出来ませんでした。 モーショントゥイーンをかけていない、普通のボタンは、普通に設定(145を足さない)でうまく動いてくれます。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 時刻取得について

    C言語において時刻取得を以下のようにプログラムしたら、プログラムを3回目以上実行すると前回時間内容が常に1回目が表示されてしまいます。どこを直せばちゃんと前回の時刻が正しく表示されるようになるのでしょうか。put()のfopenの"a"の部分は"w"に変えるだけで正しく実行されるのですが、これを"a"にした場合について正しく表示されるようにするということです。 #include <time.h> #include <stdio.h> void get(void); void put(void); char data_file[] = "time.dat"; int main(void) { get(); put(); return(0); } /* 前回の日付・時刻を読込む   */ void get(void) { FILE *fp; time_t t; struct tm *local; time(&t); local = localtime(&t); if ((fp = fopen(data_file, "r")) == NULL){ printf("\a本プログラムを実行するのは初めて\n"); }else { int year, month, day, h, m, s; fscanf(fp, "%d %d %d", &h, &m, &s); printf("前回は%d時%d分%d秒\n", h, m, s); fclose(fp); } } /* 今回の日付・時刻を書き込む   */ void put(void) { FILE *fp; time_t t; struct tm *local; time(&t); local = localtime(&t); if ((fp = fopen(data_file, "a")) == NULL) printf("\aファイルをオープンできません。\n"); else { printf("現在の日付・時刻を書き出しました。\n"); fprintf(fp, "%d %d %d\n", local->tm_hour, local->tm_min, local->tm_sec ); fclose(fp); } }

  • 音楽が輪唱してるように聞こえてしまう

    いつもお世話になってます。 環境はWindews XP、FLASH Basic8 を使用してます。 シーンは3つあり、各シーンに音楽を設定しています。 音楽はフレームに設定しています。 シーン1→01.wavを設定 シーン2→02.wavを設定 シーン3→03.wavを設定 (こんな感じで音楽を設定しています。) 全てのシーンには、他のシーンの1フレーム目から再生されるように以下のようなAction Scriptをムービークリップに設定しました。 _root.bt1.onRelease = function() { gotoAndPlay("1", 1); }; _root.bt2.onRelease = function() { gotoAndPlay("2", 1); }; _root.bt3.onRelease = function() { gotoAndPlay("3", 1); }; ですが、これだとクリックした時に、シーンは切り替わっても、音楽が切り替わらず、輪唱しているようになってしまうんです。 シーンが切り替わると同時に、音楽も切り替わるようにするにはどうしたらいいのでしょう??? まだFlashを始めたばかりで、Action Scriptのこともまだよく分かっていません。。。 どこをどうしたらいいのか、初心者な私に、どうか皆様ご教授下さい。 また、足りない情報がありましたら、ご指摘下さい。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 現在時刻をミリ秒まで取得

    お疲れ様です 現在時刻をミリ秒まで取得がしたいです。 今はtime_tを使って秒までは取得したのですがミリ秒は構造体にないらしく同じようにとってはこれないのでしょうか? また別のやり方だとどんなのがあるか教えてください。 現在は下記のように取得してyyyymmddhhmmssの形を作ってます。 これをyyyymmddhhmmsssssのようにミリ秒を増やしたたいのです。 長くなってしまいましたがよろしくお願いします time_t timer; time(&timer);/* 現在の時刻を取得 */ struct tm *local; local =localtime(&timer);/* 地方時の構造体に変換 */ CString time; //CString用の時間 time.Format("%4d%02d%02d%02d%02d%02d" ,local->tm_year + 1900,/* 年 */ local->tm_mon+1,/*月は0から始まるので1を+*/ local->tm_mday,/* 日 */ local->tm_hour,/* 時 */ local->tm_min,/* 分 */ local->tm_sec);/* 秒 */

  • FlashMX フレームの削除はDeleteキーではできない?

    FlashMXを使っていて違和感を感じました。 F5キーではフレームの挿入 F6キーではキーフレームの挿入が Flash5と同じようにできるのに Deleteキーでのレイヤーの削除ができません。 これはできないのでしょうか。 それとも何か設定をすれば できるようになるのでしょうか。 教えていただけたらありがたいです。 よろしくお願いいたします。

  • エクセル 時刻の設定ができない

    28分56秒を28:56と入力をすると1900/1/1 4:56:00と表示されます セルの書式設定で表示形式を13:30に設定しても同じように表示されます またユーザー定義で設定しようとしても1900/1/1 4:56:00と表示されます どのようにすれば28:56と表示され時刻表示になるのでしょう よろしくお願いいたします

  • Flashムービーでレイヤー個別のタイミングでループする方法

    Flash初心者です。 今、FlashMXを使ってムービーを作っています。 ムービー全体は300フレームあります。 そこで、 ・レイヤー1→100フレームから150フレームまでをループ。 ・レイヤー2→120フレームから170フレームまでをループ ・レイヤー3→140フレームから190フレームまでをループ という様に、レイヤー別に特定のフレーム間をループさせる方法はないでしょうか? イメージとしては、3文字のロゴが1文字ずつちょっとずれて波のように上下に動く感じを出したいんです。 どなたか知恵をお貸し下さい。

専門家に質問してみよう