• 締切済み

flashで作成した時計を、PHPで取得したサーバー時刻で動かしたい。

flashで作成した時計を、PHPで取得したサーバー時刻で動かしたい。 宜しくお願い致します。 現在、flashのサンプルページで拝借したアナログ時計を持っているのですが、 これを、PHPのサーバー時刻で動かす事が出来ませんでしょうか。 現在、針のムービーのActionScript(2.0)はこのようになっております。 nowDate = new Date(); hour = nowDate.getHours(); minute = nowDate.getMinutes(); second = nowDate.getSeconds(); for (mc in this) { this[mc].setNowTime(hour, minute, second); } ※2番目のモーションには「gotoAndPlay(1);」と入っています。 ActionScriptは全くの素人の為、宜しければ易しくご教授頂けると幸いです。 宜しくお願い致します。

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

this[mc].setNowTime(hour, minute, second); これの意味が何のことやら全くわかりませんので無視させていただきます。 PHP で 「1970年1月1日0時 からのミリ秒数」 を取得し PHPにアクセスした時にその数値を表示させることはできますでしょうか? たとえば「time.php」というアクセスで「1267054770906」のようなデータを表示させること。 それができれば Flash から その値をロードして使えば良いということになります。 ◎簡易例です テキストエディタで 1267054770906 とだけ書いたものを用意し, 任意のPCローカルフォルダに 「time.php」 というファイル名で保存します。 中身は単なるテキストですが拡張子は .php で良いです。 次に Flash を起動させて ActionScript 2.0 の新規ドキュメントを作成し 上の 「time.php」 と同じフォルダに任意の名前で保存します。 そのFlashドキュメントのフレームに次のように書きます。 ---------------------- //テキストフィールド「time_txt」を作成 this.createTextField("time_txt", 0, 20, 10, 0, 0); time_txt.autoSize = true; //このタイムラインの変数化 var me:MovieClip = this; //サーバ時刻の変数 server_time の宣言 var server_time:Number; // 開始時間の変数 start_time の宣言 var start_time:Number; // 時刻を求める関数 answerTime を定義 function answerTime() { //1970年1月1日からの経過時間を算出 var my_time:Number = server_time+(getTimer()-start_time); //その時間の時刻オブジェクトを作成 var nowDate:Date = new Date(my_time); var hour:Number = nowDate.getHours(); var minute:Number = nowDate.getMinutes(); var second:Number = nowDate.getSeconds(); //テキストフィールドに時刻を表示 time_txt.text = hour+"時"+minute+"分"+second+"秒"; } //LoadVarsクラスのインスタンスmyLV を作成 var myLV:LoadVars = new LoadVars(); //データロード完了時に実行 myLV.onData = function(my_data:String) { //変数 server_time にロードしたデータを数値にして代入 server_time = Number(my_data); //変数 start_time にロードした時点での時間を代入 start_time = getTimer(); //answerTime を毎フレーム実行 me.onEnterFrame = answerTime; }; //myLV に time.php をロード myLV.load("time.php"); ---------------------- 「制御」→「ムービープレビュー」で動作確認できると思います。 PHPに頻繁にアクセスするわけにはいかないので, 最初だけアクセスして時刻を貰い あとは Flash 内(クライアントサイド)で経過時間を加算していく方式です。 長時間アクセスしないとだんだん時刻が狂ってきます。 たまにはリロードするなどのことが必要です。