• ベストアンサー

FLASHで、サーバの時間を取得したい

FLASHの超初心者です。すごく恥ずかしい質問かもしれませんが、FLASHの動作に時間的な期限を付けたいと考えております。(○○年○月○日までは動作すると言う風にしたいと考えております) どうも、gettimerでは、パソコン自身の時間を取得する様ですので、きちんとした期限にはならないようです。 CGIと連携させる方法や、JavaScriptと連携させる方法を調べたのですが今ひとつ、良くわかりませんでした。 若干のPerlとJavaScriptは、解るつもりです。 何か簡単な方法をご存知でしたら、お手数ですが教えてください。よろしくお願い申しあげます。

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

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

こんにちは。 No1さんは、そのFlashを表示させるためのHTMLページをPerl言語で出力する。と、言う方法だと思います。 それでも、簡単にできると思いますが、別の方法を紹介します。 まず、Perl言語で作られたスクリプトを用意しますが、こちらはサーバの時間を出力するだけの動作だけさせるようにします。 ちょっと、Perl言語は2年以上さわってないのでうつろ覚えですが、 ※テストしてないので、動作するかわかりませんが考え方はこんな感じです。 #!/usr/local/bin/perl ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); #出力開始 print "Content-type: text/plain\n\n"; # Flashに 「 year=2005&mon=3&day=7 」という形で今の時間を出力 #時間まできっちり決めるのなら、時・分・秒まで付け加える print "year=" . $year . "&mon=" . $mon . "&day=" . $mday; 次にFlash側で、ルートの1フレームのフレームアクションに以下のソースを。 ※CGI等から値を受け取る作品は、あまり突き詰めて作った事ないので 自信ありませんが(^ ^ ;ゞ //2005年7月30日が有効期限 maxYear = 2005; maxMon = 7; maxDay = 30; //受け取る準備 nowDate = new LoadVars(); nowDate.load("http://・・・・「先ほどののCGIのアドレスを記述 ・・・"); //受け取ったら nowDate.onLoad = function(){ //期限が過ぎてないかチェック if (nowDate.year >= maxYear){ if (nowDate.mon >= maxMon){ if (nowDate.day >= maxDay){ this.gotoAndPlay(3); //期限以内の場合だけ、3フレーム目に飛べる }else this.gotoAndStop(2); }else this.gotoAndStop(2); }else this.gotoAndStop(2); } this.stop(); こんな感じでしょうか。記述します。1フレーム目には、このスクリプトだけ、もしくは「有効期限をチェックしています」というような、文字列を配置しておきます。 2フレーム目は、「有効期限が過ぎています」といった、文字列を配置しておきます。 実際のムービーは、3フレーム目以降に作成します。 もう少しスムーズに、Perl側で「time関数」を使ってやるともっとすっきりするかもしれません。 あるいは、Perl側で期限が過ぎているかチェックしてFlash側に、「TRUE」か「FALSE」を返すというのもいいかもしれません。 日付程度なら、これで大丈夫だと思います。 もう少し細かく、Flashを開いてから○○秒後のように、リアルタイムせいを求めるのなら、XMLSocketオブジェを使う方法もあります。(この場合は、サーバを自作するかどこかのを拾ってくるかしないとむずかしいかもしれませんが・・・。JAVA言語やPerl言語で時間を返す程度のサーバなら簡単に作れると思います。(^ ^ ;ゞ)

extramild
質問者

お礼

お礼が遅くなり、失礼いたしました。 実は私も、Perlは2年ほどお休みしておりましたので その辺りもサポートして頂き大変助かります。 また、以前に作成したプログラムでもコピーしながら 作成してみたいと思います。ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

Flashはクライアントプログラムなのでこの辺が弱いところですね。 若干のPerlが分かるという事でしたら、Flashを呼び出すベースのHTMLからFlashに変数を受け渡せば簡単です。 仮にUNIXタイムをPerl側から取得し、変数をutimeとします。 一番簡単な受け渡し方法は、呼び出すフラッシュ名をtext.swfとした場合に、フラッシュ名を text.swf?utime=xxxxxxxxx とすれば、フラッシュ側で値を受け取る事が出来ます。 フラッシュ側で取り出すときは servertime = utime; とでもすれば良いと思います。

extramild
質問者

お礼

お礼が遅れまして失礼しました。 早速試してみたいと思います。ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A