• 締切済み

【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); } } }

  • Flash
  • 回答数1
  • ありがとう数0

みんなの回答

  • 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

  • 【Flash】でタイムラインがうまく動作しません。

    FLASHのgotoAndPlayで飛んだ後に、タイムラインがうまく動作しません。 環境は以下です。 ActionScript 3.0 Flash CS5 Windows7 php 5 具体的には、 (1)スタートボタンがあり、スタートボタンをクリック後、 (2)ランダムに数字を作成。 (3)そこで獲得した数字により、飛ばす先のラベルを振り分け。 (4)飛んだ先のラベルが、どのラベルかをphpファイルへデータ送信。 (5)飛んだ先のラベルで、長めのムービークリップ実行。 しかし1~2秒ムービークリップを実行後、タイムラインの初めに戻ってしまいます。 ラベルへの振り分けも、phpファイルへのデータ送信もうまくいっております。 しかし、(5)だけがなぜかうまく動作しません。 下記がスクリプトでございます。 皆様ご多忙かと存じますが、 修正点等がございましたら、ご教授頂ければ嬉しく思います。 ---------------------------------------------------- stop(); startButton.addEventListener(MouseEvent.CLICK, clickBtn); function clickBtn(e:MouseEvent){ var v:int = Math.ceil(Math.random()*19)+1; var url:String = "http://●●●"; var request:URLRequest = new URLRequest(url); var variables:URLVariables = new URLVariables(); variables.detail = v; request.data = variables; request.method = URLRequestMethod.POST; navigateToURL(request, "_self"); function completeHandler(evt:Event):void{ var re_variables:URLVariables = new URLVariables( evt.target.data); trace(re_variables.comp); } if (v>15) { MovieClip(root).gotoAndPlay(2); } else if (v>11) { MovieClip(root).gotoAndPlay(3); } else if (v>7){ MovieClip(root).gotoAndPlay(4); } else if (v>4){ MovieClip(root).gotoAndPlay(5); } else { MovieClip(root).gotoAndPlay(6); } } 以上でございます。 皆様のお知恵を拝借できれば幸いでございます。 何卒よろしくお願い申し上げます。

    • ベストアンサー
    • Flash
  • phpとflash

    プログラム初心者です phpとas3で送受信したいです。 flash→php→flashの流れで変数を送受信させようと思います しかし、送受信はできているのですが、日本語だけが文字化けします うまくいけば。「こんにちわほげabc55」になるはずなんですが flashで表示されるのは「こんにちわق°abc55」とphpで加えた日本語が文字化けしています flashからpostされた日本語「こんにちわ」は文字化けしないで、flash→php→flashまで返ってきています flash cs5 のデフォルトの文字コードはUTF-8です phpファイルの文字コードはUTF-8でファイルを保存しています よろしくお願いします PHP <?php $comment = $_POST['com']; $comptxt = $comment."ほげabc55"; echo "comp=" . $comptxt; ?> AS3 var request:URLRequest = new URLRequest ( "test.php" ); //PHPへPOST送信 request.method = URLRequestMethod.POST; var variables:URLVariables = new URLVariables(); //↓送る変数 variables.com = "こんにちは"; request.data = variables; var loader:URLLoader = new URLLoader (request); loader.dataFormat = URLLoaderDataFormat.VARIABLES; loader.addEventListener(Event.COMPLETE, onComplete); loader.load(request); function onComplete (event:Event):void{ //↓戻り値を変数に格納 var vars:URLVariables = new URLVariables( event.target.data ); t1.text=vars.comp; }

    • ベストアンサー
    • PHP
  • ActionScript3.0によるPHPへの変数の送信について

    はじめまして。 現在、FlashとPHPを用いたシステムを制作中なのですが、FlashからPHPへの変数の送信でつまづきました。 ネット上で調べてみてもAS3で解説しているサイトはほとんど見つからず、見つかっても自分の理解が悪いのかうまく行かない状況です。 状況としては下記のようなAS3とPHPを実行しています。 AS3から値をPOSTしてPHPで表示、それを読み取ってFlashでtraceしています。traceで1234は返ってきているのですが、PHP側ではcomp=しか表示されません。初歩的なミスだと思いますが、どこが悪いのかアドバイスいただければ幸いです。 よろしくお願いします。 環境 Flash CS3 Apache2.2 PHP5.2.6 ソース AS3 System.useCodePage = true; var request:URLRequest = new URLRequest ( "http://localhost/sample/FlashToPHP.php" ); //PHPへPOST送信 request.method = URLRequestMethod.POST; var variables:URLVariables = new URLVariables(); //送る変数 variables.num = "1234"; request.data = variables; var loader:URLLoader = new URLLoader (request); loader.dataFormat = URLLoaderDataFormat.VARIABLES; loader.addEventListener(Event.COMPLETE, onComplete); loader.load(request); function onComplete (event:Event):void{ var vars:URLVariables = new URLVariables( event.target.data ); trace( vars.comp ); } PHP <?php //変数を受け取る $comment = $_POST['num']; $comp = $comment; echo "comp=".$comp; ?>

    • ベストアンサー
    • Flash
  • AIR for Android と PHPの連携

    Flash CS6(Windows)を使ってPHPと通信するアンドロイドアプリを製作しています。 AIR 3.4 for Androidでパブリッシュし、PC上で動作させると普通にPHPと通信出来ます。 が、アンドロイド端末へインストールすると通信出来ません。 もしかしてAIR 3.4 for AndroidでパブリッシュしたアプリではPHPとの通信は出来ないのでしょうか? もし、いい方法があれば教えていただければ非常に助かりますm( _ _ )mコマッテマス SEND_btnというボタンをクリックした時、FLASH内に記述したデータをPHPに渡して PHP側で結合させてテキストボックスhensuに返すという単純なプログラムです。 <<< Flash側 >>> SEND_btn.addEventListener(MouseEvent.CLICK, fl_Click); function fl_Click(event:MouseEvent):void { // 送信データ var variables:URLVariables = new URLVariables(); variables.title = "ABC"; variables.url = "DEF"; variables.text = "GHI"; // データ送信先 var url_Request:URLRequest = new URLRequest(); url_Request.url = "phpアドレス"; url_Request.method = URLRequestMethod.POST; url_Request.data = variables; // 送信 var url_Loader:URLLoader = new URLLoader(); url_Loader.dataFormat = URLLoaderDataFormat.VARIABLES; url_Loader.addEventListener(Event.COMPLETE,completeHandler); url_Loader.load(url_Request); // 受信; function completeHandler(evt:Event):void { var re_variables:URLVariables = new URLVariables(evt.target.data); hensu.text = re_variables.DATA; } } <<<PHP側>>> <?php $title = $_POST['title']; $url = $_POST['url']; $text = $_POST['text']; $All = $title.$url.$text; $res = "DATA=" .$All; echo $res; ?>

    • ベストアンサー
    • Flash
  • 下記のような関数から外部からの戻り値を返したいのですが

    下記のような関数から外部からの戻り値を返したいのですが 良い方法はございませんでしょうか? 例えば trace( test( "test" ) ); このように戻り値を返す関数にしたいです。 function test( strData:String ):String { var variables:URLVariables = new URLVariables(); variables.data = strData; var request:URLRequest = new URLRequest(); request.url = "http://test.asp"; request.data = variables; request.method = URLRequestMethod.POST; var loader = new URLLoader(); loader.addEventListener(Event.COMPLETE , function(event) { var retValue:String = new String(event.target.data); }); loader.load(request); //return ???? }

    • ベストアンサー
    • Flash
  • 【AS3.0 変数をPHPにPOSTする方法】

    【AS3.0 変数をPHPにPOSTする方法】 開発環境:WinXP ADOBE CS4 ActionScript3.0 すいません。教えてください。 Flashで得た複数の値を外部ファイルに出力したいと考えています。 例えば、btnA・btnB・btnCという3つのボタンがあり、 ボタンをクリックすると、クリック数がカウンターになり、 その値をPHPファイルにPostしたいと考えています。 現在のソース(btnAのみ) ---------------------------------------------------------------- var req:URLRequest = new URLRequest ("http:++++++.php"); req.method = URLRequestMethod.POST; var variables:URLVariables = new URLVariables(); //送信パラメータ variables.num01 = 0; req.data = variables; var loader:URLLoader = new URLLoader (req); var are01=0 var num01=0 a_btn.addEventListener(MouseEvent.CLICK,aClick); function aClick(event:MouseEvent):void{ var num01=are01++ trace(num01) var printdata:URLVariables = new URLVariables(event.target.data); loader.load(req); } -------------------------------------------------------------- num01の数値がトレースはされているのですが、 phpの値に代入されません。 --------------------------------------------------------------- phpソース $comment = $_POST['num01']; print "rData=" . $comment;</body> ---------------------------------------------------------------- 同時に複数の値・仮にnum02・num03も同様にPHPにPOSTしたいと考えているのですが、 その際の方法がわかりません。 恐れ入りますが、ヒントだけでもよいので教えていただけないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ムービー上で入力した値の送信がうまくいきません。

    FLASH CS6 にてムビーを作成しております。 AS2.0から3.0に移行してちんぷんかんぷんになっております。 題名の通りムービー上でIDとパスワードを入力して送信ボタンを押すとPHPにデータが渡って 返ってくるということがしたいのですが 以下のようにしたのですがうまくいきません。 dataObj.search_id = MovieClip(root).search_id; dataObj.search_pass = MovieClip(root).search_pass; 以下のように予め入力しておくとうまく動作します。 dataObj.search_id = 123; dataObj.search_pass = 456; 単純な代入ミスかタイミングの問題だと思うのですがどうやっても動きません。 お手数ですが3.0初心者ですので宜しくお願いします。 ===以下スクリプトです。=== php_btn.addEventListener(MouseEvent.CLICK, execPHP); //クリックでCGIを実行する function execPHP(eventObj:MouseEvent):void { //送信するデータオブジェクト var dataObj:URLVariables = new URLVariables(); //以下のようにムービー上のsearch_idとsearch_passに入力された値を送信したい。 dataObj.search_id = MovieClip(root).search_id; dataObj.search_pass = MovieClip(root).search_pass; //リクエストの作成 var urlReq:URLRequest=new URLRequest(); urlReq.url="http://hoge.com/hoge.php"; urlReq.method=URLRequestMethod.POST; urlReq.data=dataObj; //URLLoaderの作成 var cgiLoader:URLLoader=new URLLoader(); //送受信するデータフォーマットを指定する cgiLoader.dataFormat=URLLoaderDataFormat.VARIABLES; cgiLoader.addEventListener(Event.COMPLETE, onCGIComplete); try { //PHPを実行する cgiLoader.load(urlReq); } catch (e:Error) { // エラー処理 } } //PHPの実行結果を受け取る function onCGIComplete(eventObj:Event):void { var loader:URLLoader=eventObj.target as URLLoader; //受信したデータオブジェクト var dataObj:URLVariables=new URLVariables(loader.data); //受信したデータの確認 var result:String=dataObj.res1; result_fld.text=result; }

    • ベストアンサー
    • Flash
  • AS3で外部サーバのPHPに値が送れない。

    AS3で外部サーバにあるPHPへ値を送ろうとしているのですが、 うまく行きません。 同じサーバ内でのテストは正常に行えましたので、スクリプトに間違いは ないと思うのですが、外部サーバには値を送れない仕様なのでしょうか。 - - - var scriptRequest:URLRequest = new URLRequest("http://www.xxxxxxxx.jp/insert.php"); var variables:URLVariables = new URLVariables(); var scriptLoader:URLLoader = new URLLoader(); variables.page = test1_TB.text; variables.dated = test2_TB.text; scriptRequest.data = variables; scriptRequest.method = URLRequestMethod.GET;

    • ベストアンサー
    • Flash
  • AS3.0による外部swfの制御

    AS3.0による外部swfの制御 質問させていただきます。 やりたいと事は、メインとなるswfのボタンを押して、 読み込んだ外部swf(stopしている)を再生(play)したいと考えております。 メインのswfはAS3.0、読み込む外部swfはAS2.0になります。 環境はFlash CS3です。 以下がスクリプトになります。 //swf読み込み配置 var loader_obj : Loader = new Loader(); var url : URLRequest = new URLRequest("test.swf"); MovieClip(root).loader_obj.load(url); loader_obj.y = 3 loader_obj.x = 392 stage.addChild(loader_obj); //swfボタン制御 btn.addEventListener(MouseEvent.ROLL_OVER,btn_play); function btn_play(event:MouseEvent):void {MovieClip(root).photo.gotoAndPlay(2);//メインswfのムービーリップも動かす <--ここに外部swfを参照するスクリプトが入ると思うのですが・・・-->gotoAndPlay(2);//外部swfの2フレーム目から再生 } 肝心の所のスクリプトはわかりません・・・ 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • readyStateが4にならない原因

    apache2でAjaxの試しとして下記スクリプトだけのhtmlファイル(http://localhost/newfile.html)を 作り動作を確認してみました(空白部分は全角になっています)。すると最後の部分の alert("Error: readyState code is " + request.readyState);で 2→アラートのOKを押す→一瞬1になり3→アラートのOKを押す→一瞬1になり0→アラートのOKを押すと1になりました。そしてコンソールには ------------------------------------------------ GET http://localhost/a.php 200 OK 60ms Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) request.send(url); ------------------------------------------------ といったエラー表示がでてしまいます。 また、request.openで渡すURLの「http://localhost/a.php」を「a.php」にすると、 一瞬1になり2→アラートのOKを押す→一瞬1になり0→アラートのOKを押すと1 になります。なぜ4にならないのでしょうか。 request.statusは全部0になっているようです。 <script language="javascript" type="text/javascript"> var request = false; try {   request = new XMLHttpRequest(); } catch (trymicrosoft) {   try {     request = new ActiveXObject("Msxml2.XMLHTTP");   } catch (othermicrosoft) {     try {       request = new ActiveXObject("Microsoft.XMLHTTP");     } catch (failed) {       request = false;     }   } } if (!request)   alert("Error initializing XMLHttpRequest!"); window.onload = getCustomerInfo; function getCustomerInfo() { var url = "test"; request.open("GET", "http://localhost/a.php", true); request.onreadystatechange = updatePage; request.send(url); } function updatePage() { if (request.readyState == 4){ if(request.status == 200){     var response = request.responseText;          document.write(response); }else  if (request.status == 404){   alert("Request URL does not exist");      }else{      alert("Error: status code is " + request.status); } }else{   alert("Error: readyState code is " + request.readyState); } } </script>

    • ベストアンサー
    • AJAX

専門家に質問してみよう