- ベストアンサー
actionscriptとphpの連携
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です > ある日の午前0時に発売開始する商品があるとして、 > その日の時間までをフラッシュで表示したい なるほど。そういうことですか。 その「ある日の午前0時」(仮) は, サーバでもクライアントでも同じ時点を指しますよね。 今の時刻が2000年10月であっても2010年11月であっても「ある日の午前0時」は同じ時点を指します。 ですから,これは固定でFlash(クライアントサイド) でも求められます。 「今」は, どこから見るか,いつから見るかによって変わりますから, この「今」をサーバで決めた今にするということですよね。 ActionScript 3.0 で Flash フレーム1 のスクリプトだと こんな感じでできると思います↓ ---------------------- //テキストフィールドを作成 var time_txt:TextField = new TextField(); time_txt.autoSize = TextFieldAutoSize.LEFT; addChild(time_txt); //ゴール時刻を2010年11月20日13時とする var goal_date:Date = new Date(2010,10,20,13,0,0); //今のクライアント時刻を入れる変数 var now_date:Date; //キャッシュ参照対策用 now_date = new Date(); var now_time:Number = now_date.getTime(); //サーバ時刻との差を入れる変数 var dif_time:Number; //PHPへのパス(キャッシュ参照対策入り) var php_url:URLRequest = new URLRequest("time.php" + "?t=" + now_time); //PHPのローダー var php_ld:URLLoader = new URLLoader(); //PHPロード時に関数onLoadCompを実行 php_ld.addEventListener(Event.COMPLETE, onLoadComp); //PHPをロード php_ld.load(php_url); //関数onLoadCompの定義 function onLoadComp(evt:Event):void { //今のクライアント時刻 now_date = new Date(); //サーバとクライアントの1970/1/1からの経過ミリ秒の差 dif_time = Number(evt.target.data) - now_date.getTime(); //毎フレーム関数countDownを実行 addEventListener(Event.ENTER_FRAME,countDown); } //関数onLoadCompの定義 function countDown(evt:Event):void { //今のクライアント時刻 now_date = new Date(); var sec:Number = (goal_date.getTime() - now_date.getTime() - dif_time)/1000; time_txt.text = "あと " + String(Math.round(sec)) + "秒"; } ---------------------- キャッシュ参照対策を入れていますから このままではムービープレビューでは動作しないと思います。 SWF と HTML をパブリッシュした上で 「time.php」 が 1970年1月1日からのミリ秒を出すようにして HTML をブラウザで見たら「あと○○秒」が表示されると思います。 「ある日の午前0時」(仮) は Flash 内で固定的にしていますが, サーバで変えてその変えたデータもロードするようにしても良いと思います。 ※それと 他プログラム言語でも同じですが 月の数 は 日本人的数え方 とは 1 ずれます。 日本人の1月はプログラムでは0の月になります。 12月は11の月です。
その他の回答 (2)
- BlurFiltan
- ベストアンサー率91% (1611/1754)
#2です > ------------------------------------------ > //サーバとクライアントの1970/1/1からの経過ミリ秒の差 > dif_time = Number(evt.target.data) - now_date.getTime(); > ↓ > dif_time = Number(evt.target.data)*1000 - now_date.getTime(); > ------------------------------------------ > 私はこれで大丈夫だと思うのですが、念のため報告させていただきました。 それは, サーバ(PHP)からFlashに 『秒』 を送ったからでしょう? それならばそのスクリプトで良いです。 #1で,私が書いたPHPコード↓ <?php $now = time() * 1000; echo $now; ?> これだとだと ミリ秒 が送信されるので それに合わせてFlashのスクリプトの方には 「*1000」 を入れなかったのです。 勝手に違う場所のコードを変えると混乱するでしょう? だからあえて #1 のPHPはそのままでという条件でのことを書いたのです。 > フラッシュで1秒というのはどうやって認識してるのでしょうか? ??? Flash Player が PC の時刻を1フレーム進む時間毎に取得しているだけですよ。 何が疑問なのかかわかりませんけが。。。 それが不思議でしたら,PCで時間が取得できていること自体の方がもっと不思議です。 PCで時刻を取得するアルゴリズムや仕組みなどそんな難しいことはさておき, Flash Player はとにかく PC が何らかの形で得ている時刻を単に見に行っているだけです。 何の不思議もありません。 > 例えばフレームレートが12だったら12フレームいったら1秒ということですよね。 そうです。 でもそれは何も関係ないでしょう? 1秒に12回PCの時刻を見に行っても 10分に1回PCの時刻を見に行っても 間隔などはどうでも良くて関係ありません。 8時に見に行けば 「8時だよ!」 と 8時11分30秒に見に行けば 「8時11分30秒だよ!」 と PCが返してくれるだけです。 人間でもそうです。 10時に時計を見れば10時です。 頻繁に時計を見ても,1時間に1回時計を見ても 10時は10時です。
お礼
ご回答ありがとうございます。 疑問というか、勉強不足失礼しました。 >8時に見に行けば 「8時だよ!」 と 8時11分30秒に見に行けば 「8時11分30秒だよ!」 と PCが返してくれるだけです。 まったくその通りですね。。。こんな質問にも答えていただきありがとうございました。 今回は非常に勉強になりました。
- BlurFiltan
- ベストアンサー率91% (1611/1754)
◎まず作ろうとされているものがわかりません 「タイマー」 とは普通 「2つ以上の時点間の相対的な時間差を測るもの」 です。 例えば ボタンA がクリックされてから ボタンB がクリックされるまでの間の時間 とか Flash の再生が開始されてから現在までの経過時間 とかをタイマーで測るのです。 それのどこにサーバやクライアントというものが絡むのでしょうか? サーバでもクライアントでも経過時間は経過時間でほぼ同じになると思いますが。 「タイマー」ではなく「時計」ではないですか? つまり 「PHPで取得したサーバ時刻で動く時計」 を作成したいということではないかと思うのですが。 ◎次にバージョンがわかりません お持ちの Flash のバージョンも ActionScript のバージョンもわかりません。 これではまともに回答できませんが。 ~・~・~・~・~・~・~・~・~・~・~・~・~ 「PHPで取得したサーバ時刻で動く"時計"」 で 「Flash MX 2004 以上」で 「ActionScript 2.0」のものでしたら 以前に回答したことがあります↓。 「flashで作成した時計を、PHPで取得したサーバー時刻で動かしたい。」 http://okwave.jp/qa5702578.html 「Flash MX 2004 以上」とは Flash MX 2004,8,CS3,CS4,CS5 のことです。 なお, 上記ページでは PHPファイル 「time.php」 の コード を書いていませんが, 1970年1月1日からの経過ミリ秒数(経過秒数×1000)は, 次のようにすれば表示(Flashに送信)できます(一応検証済み)。 「time.php」 --------------------- <?php $now = time() * 1000; echo $now; ?> --------------------- 「PHP関数講座:time -- そふぃのphp入門」 http://nyx.pu1.net/function/datetime/time.html ちなみに 私がこの検証に使用したサーバは 上記のPHPコードでできたのですが, time() で得られる数値は UNIX時間 であるため 20時間 の差があるなどと書かれたページもあります。 「time()関数-PHP関数リファレンス」 http://www.scollabo.com/banban/php/ref/ref_time.html
補足
回答ありがとうございます。 説明不足すみませんでした。 具体的にやりたい事とは、キャンペーンページのオープンまでの時間をカウントダウンしたいと考えています。 例えばある日の午前0時に発売開始する商品があるとして、その日の時間までをフラッシュで表示したいと思っています。 actionscriptのバージョンは3.0です。 教えていただいた参考サイト等を見てみたいと思います。 ありがとうございました。
関連するQ&A
- ActionScriptを教えてくれるスクールは?
現在PHPを勉強中の者です。 ライブチャットサイトを作成したいと思っています。 少し調べたところ、必要なスキルはPHP、ActionScript、MySQLや、Flach Communication Serverを設定できる事。のようです。(HTMLは他の仲間が使えるので大丈夫です。) そこでActionScriptをどこかのスクールで学びたいと思っているのですが、スクールで学べば、上記のようなライブチャットサイトを作成できるようになるのでしょうか? また、作成できるようになる為の講座をやっているスクールを知っていましたら、教えて頂ければ幸いです。 宜しくお願い致します。
- 締切済み
- Flash
- 【初心者です】 flashとphp、MySqlの連携について
現在、flashを使用した予約システムの開発を検討しています。 流れとしては、flashの画面から必要な情報を入力してもらい、 "次へ"ボタンを押すと、flash画面に先ほど入力した情報の確認画面が出力され、"確認ボタン"を押すと その情報がDBに登録されるといった ものです。 私はactionscriptはそこそこ理解できていますが、phpに関しては 全くの初心者で、flash側でのプログラムはLoadVarsを使用してデータをphpに渡せばいいという事は分かったのですが、そこからがよく分かりません。 何か参考になるサイトがありましたらご紹介願えないでしょうか? 宜しくお願い致します。 開発環境: windows XP xampp , dreamweaver8, flash8
- 締切済み
- PHP
- PHPとACTION SCRIPTの連携
PHPとACTION SCRIPTの連携 サーバー(レンタルサーバ)側でMYSQLのデータをからPHPで取り出すことができるようになりましたが、 そのデータを、どうやってaction script(クライアント側)に連携させるかで悩んでます。 phpとmysqlの連携の本は何冊かそろったのですが、 ACTION SCRIPTとphpの連携について書いてある本が見つからなくて、 詳しい人がいたら教えてください。 PHPからmysqlに接続して、テーブルを選んで、 echo $row["●●"]; という形で、インターネットエクスプローラーに、必要なデータを表示させるところまではできたのですが、 このデータをaction scriptに連携させるには、どうしたらいいでしょうか?
- ベストアンサー
- PHP
- actionscript2.0でshadowboxを使う
javascriptのshadowbox.jsをflashのボタンから起動させるには どのようにすればいいのでしょうか。 やりたいこととしては下記のサイトで行っていることをやりたいのですが、 actionscript2.0の場合がわからなくて困っています。 ▼参考 http://k-nakamura.net/blog/index.php?ID=43
- 締切済み
- デザイナー・クリエイティブ職
- PHP(Webサーバ)でFlashファイルを作成するには?
サーバ上にアップロードされた画像を Flashで順番に表示していくシステムを作りたいのですが、 画像をアップロード後にサーバ側でFlashファイルを作成することは 可能でしょうか。 PHPで制御可能かということと、別途必要なソフト等があるかも 含めて教えて下さい。 何卒よろしくお願い申し上げます。
- 締切済み
- PHP
- PHP4とpostgreSQLについて
始めまして、私はi-mode用のランキングサイトを運営しております。 どなたかご回答いただけますと幸いです。どうぞよろしくお願いいたします。 昨年末、レンタルサーバーへ依頼しプログラムを作成し新たにPHP4より postgreSQLを呼び出す形でサイトをリニューアルしたのですが、サーバーが急に 重くなり正常な運営が困難な状態になっております。 サイトは現在TOPページ3万PV/日ほどでリニューアル前はこの倍はありました。 登録サイト数は380ほどです。 現在のサーバースペックですがCPUはP3の700M、メモリ768MBです。OSはLinux、 wwwサーバーはApacheです。 DBサーバーを別に用意すればよいと助言されたのですが、本当にそれでよいのか、なにかプログラム的に問題があるのではとも思いまして他の方のご意見も参考に したほうがよいと判断してご相談させていただいております。 私にはまだPHPとpostgreSQLの知識が浅くこのような情報でよいのかもわかりませ んがどうぞよろしくご回答くださいませ。 サイトURLは下記に記載いたします。 http://web-iranking.com/rank.php
- 締切済み
- CGI
- phpやjavascriptで時計表示
phpやjavascriptを使って自サイト内に現在の日本時間を表示(デジタル時計みたいに)させたいのですが、分かりません。 phpで取得したサーバー時間をjavascriptで動かせばいいのでしょうか。 それとも、javascriptで取得したグリニッジ標準時間に+9時間で動かせばいいのでしょうか。 なにせphpやjavascript初心者ですので、具体的なソースなど教えて頂けると助かります。 宜しくお願いします。
- 締切済み
- JavaScript
- PHPまたはPerlで動画を扱うのに参考になるサイト
PHPまたはPerlでflashなどの動画を扱うのに参考になるサイトや本を 教えてもらえないでしょうか? 動画の再生時間を取得方法、動画を作成する方法、動画のサムネイルを 作る方法などが詳しく載っているとありがたいです。
- ベストアンサー
- PHP
- PHPとGoogleAPIの連携時の問題について
いつも、こちらでお世話になっております。 現在、PHPで管理画面を作成しているのですが、その際に問題がありご質問させて頂きました。 一通り説明させて頂きますと、居酒屋検索サイトを作成しております。 フロントエンド、バックエンド共にPHPで作成しており、フロントエンドでは、バックエンドで登録した居酒屋の一覧を出力させる仕様となっております。 居酒屋の一覧というのは、GoogleMapと連携し居酒屋のリンク一覧と地図上にマーカーを表示させます。 マーカーは、地図の領域内に動的に出力されます。 分かりにくいと思うので、イメージサイトがあります。 以下のURLのような形です。(市区町村を適当に選択してください) http://www.matsukiyo.co.jp/map?Type=Area&area=23&keyword= ※ 市区町村選択後、マウスで地図を動かすと、店舗の一覧が動的に変わります。 これを実現させる為に、管理画面から居酒屋を登録させる際に、GoogleAPIを使用し、 予め居酒屋の住所から経度緯度を取得しておく必要があります。 単一登録を行う時は問題ないのですが、他にCSVから一括登録も可能となっております。 GoogleAPIの経度・緯度の取得は、1秒おきに行う必要があるらしく、1秒たたずに連続して問い合わせを行うと、うまくデータが取得できないようです。 http://docolog.cocolog-nifty.com/papalog/2012/01/google-maps-geo.html また、住所によってはうまく経度・緯度が取得できないばあいもあるようでして、非常に困っております。 上記回避方法が、皆目検討がつかない状況で、ご質問させて頂いた次第です。 良い方法があるという方、どうかお力をおかしください。 何卒宜しくお願い致します。
- ベストアンサー
- PHP
お礼
実際に動かしてみたのですが、時間は表示されるのですが、おおよそ見当がつく時間とはかけ離れた時間が表示されてしまいました。 そこで色々調べてみたのですが、下記URLページを見てスクリプトを変更するとうまく動いてくれました。 http://1ft.cbass.jp/blog/2008/07/000037.html ------------------------------------------------ //サーバとクライアントの1970/1/1からの経過ミリ秒の差 dif_time = Number(evt.target.data) - now_date.getTime(); ↓ dif_time = Number(evt.target.data)*1000 - now_date.getTime(); ------------------------------------------------ 私はこれで大丈夫だと思うのですが、念のため報告させていただきました。 あと、ひとつ疑問に思ったのですが、フラッシュで1秒というのはどうやって認識してるのでしょうか? 例えばフレームレートが12だったら12フレームいったら1秒ということですよね。 このカウントダウンのスクリプトはフレームレートに関係なく1秒でカウントダウンしてるのですが、これはどうやって1秒と認識してるのでしょうか。 色々と申し訳ありませんが、宜しくお願い致します。
補足
丁寧なご回答ありがとうございます。 勉強不足なところもありますので、かわらない部分等あるとは思いますが、ひとつひとつじっくり実践していきたいと思います。 ありがとうございました。