• 締切済み

【Flash、phpファイルへのデータ送受信】

phpファイルへのデータ送受信などがうまくできずに、数日間考え込んでおります。 皆様ご多忙かと思いますが、ご教授いただければ幸いでございます。 環境は以下です。 ActionScript 3.0 Flash CS5 Windows7 php 5 やりたいこととしましては、 (1)スタートボタンがあり、スタートボタンをクリック後、 (2)ランダムに数字を作成。 (3)そこで獲得した数字をphpファイルへ渡し、DB登録。 (4)phpで得たデータを、Flashへまた戻します。 (5)(4)で得た数字データにより、飛ぶタイムフレームを変更します。 ※しかし、スタートボタンをクリックしても、動作しません。 ※DB登録のプログラムは正常に動いております。 なぜこのような現象が起こるのでしょうか。 AS初心者のため、ご多忙の所を誠に恐れ入りますが、 スクリプトも記載頂けますと大変嬉しく思います。 ちなみに、下記がスクリプトでございます。 皆様、ぜひよろしくお願い致します。 ---------------------------------------------------- stop(); startButton.addEventListener(MouseEvent.CLICK, clickBtn); function clickBtn(e:MouseEvent){ var v:int = Math.ceil(Math.random()*19)+1;  var url:String = "http://●●●.php";  var request:URLRequest = new URLRequest(url);  var variables:URLVariables = new URLVariables();  variables.detail = v;  request.data = variables;  request.method = URLRequestMethod.POST; var loader:URLLoader = new URLLoader(request); loader.dataFormat = URLLoaderDataFormat.VARIABLES; loader.addEventListener(Event.COMPLETE, completeHandler, false, 0, true); loader.load(request); } function completeHandler(evt:Event):void{ var re_variables:URLVariables = new URLVariables( evt.target.data); trace( re_variables.status ); if ( re_variables.status ) { var tobu:int = re_variables.status; if (tobu>15) { MovieClip(root).gotoAndPlay(2); } else if (tobu>11) { MovieClip(root).gotoAndPlay(3); } else if (tobu>7){ MovieClip(root).gotoAndPlay(4); } else if (tobu>4){ MovieClip(root).gotoAndPlay(5); } else { MovieClip(root).gotoAndPlay(6); } } }

みんなの回答

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

(1) Flash を起動させて新規ドキュメントを作成する (2) メインタイムラインのフレームを適当にのばす (3) フレーム1 にインスタンス名「startButton」というボタンを作成する (4) フレーム2~6 もキーフレームにしてそのフレームだとわかるように適当なものを配置 (5) 新規レイヤーを追加する (6) そのレイヤーのフレーム1にご質問のスクリプトをコピペする   (【添付図】↓) (7) インデント用に入れてある全角空白文字を全て削除 (8) 「http://●●●.php」の部分を「自前で用意したPHPへのパス」に変更 (9) 制御→ムービープレビュー 実際に以上のようなことをしてみましたが, 別に異常はなく動作しましたよ。 なお上記 (8) 内に書いた 「自前で用意したPHP」の内容は どこか他の場所で書かれていた通り <?php $comment = $_POST['detail']; echo "status=".$comment; ?> という内容にしました。 ただ gotoAndPlay だと デフォルト状態のフレームレート(20fps)では再生が速すぎて いったいどのフレームから再生が始まったのかはわかりにくいとは思います。 (gotoAndStop の方が動作が検証しやすいのでは?) 問題点といえばそれくらい(結果がわかりにくいくらい)のことで 一応は命令通りに動作はすると思います。 つまり 書かれていらっしゃる範囲内では 書き方がどうのこうのというような些細なことは抜きとして スクリプトに大きな間違いがあるとか 動作の異常があるとかいうことは見つかりません。     ======================== 以下は 動作しない件について 主にご質問では書かれていらっしゃらない部分について思い当たることです。 気になるのが var url:String = "http://●●●.php"; の 「http」 です。 上で私が書いたように SWF(Flash)ファイル がローカルにある場合 Flash Player の Webアクセス グローバルセキュリティーの設定をちゃんとしておけば PHP からの値は受けとることができると思います。 逆に言えばグローバルセキュリティーの設定をちゃんとしていなければ Webにアクセスして通信するのは遮断されると思います。 これが注意点です。 「Adobe - Flash Player:設定マネージャー - グローバルセキュリティ設定パネル」 http://www.macromedia.com/support/documentation/jp/flashplayer/help/settings_manager04.html   あと SWF(Flash)ファイル をネット上にアップした場合です。 SWF をアップした場合, PHP と SWF とが別ドメインの場合は サーバ側に クロスドメイン の セキュリティ 設定をしておかなければ PHP からのデータを Flash Player が受けとらないと思います。 (ドメインは完全一致です。「http://www.aa.bb」≠「http://aa.bb」) 同じドメイン内で相対パスを使えばまずは大丈夫でしょう。 もし別ドメインであった場合の 入口程度の参考ページですが↓。 「FLASH クロスドメインポリシーファイル crossdomain.xml Memo」 http://luxnate.com/memo/2011/02/flash-crossdomainxml.html   それと 主に SWF(Flash)ファイル をネット上にアップした場合に ブラウザが PHP のキャッシュを参照してしまって 「動作しない」のではなく「同じ動作しかしない」ということはあり得るとは思います。 もしその場合は Googleで例えば「Flash PHP キャッシュ 防止」などと検索してみてください。 http://www.google.co.jp/search?q=Flash+PHP+%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5+%E9%98%B2%E6%AD%A2&hl=ja

関連するQ&A