お蔵入り

clip!clip!
Ads By Google

flashからphpへのデータ送信について

皆様初めまして。
現在MacOSXのFlash8で、phpとのデータ送受信を行うflashゲームを制作しています。
このゲームでは開始時と終了時にphpへアクセスするという形をとっているのですが、
終了時のphpの処理がどうしてもうまくいきません。
ゲーム開始時には以下のようなスクリプトを記述しています。
ダイナミックテキスト(変数id)に入力されたデータをチェックし、
idが正しければ進めるという仕組みです。

var sendObj:LoadVars = new LoadVars();
var receiveObj:LoadVars = new LoadVars();

login_btn.onRelease = function(){
sendObj.id = id;
sendObj.sendAndLoad("check.php",receiveObj,"POST");
}

また、ゲーム終了時には以下のように記述し、
ゲーム開始時に入力したidをそのまま二つのphpへと送る仕組みになっています。
"finish.php"は一度ゲームを終わらせたかどうかの判定用で、
アクセスした際に空のフォルダに「送信されたid名.txt」というファイルを生成します。
また、"リンク先フォームのphp"は通常のアンケートフォームhtmlをphpにしたもので、
フォーム側のidという項目にsendObjから送られたidが読み込まれ、
入力する手間を省くためにこのようになっています。

form_btn.onRelease = function(){
sendObj.send("finish.php","POST");
sendObj.send("リンク先フォームのphp","_self","POST");
}

問題点は2行目の記述にあります。
このままで、phpの処理はうまく行われるのですが、
”finish.php”の結果と、"リンク先フォームのphp"という二つのブラウザが開いてしまいました。
そのため、2行目のsendObj.send("finish.php","POST");を
"POST"部分を省略しsendObj.send("finish.php");に変更したところ、
フォームへのid送信はうまくいくのですが、("finish.php")がうまく処理されませんでした。
また、sendObj.send("finish.php","","POST");でもダメでした。

最終的にゲームのFlashを閉じ、フォームだけを表示したいと思っています。
一回の動作で同じオブジェクトから二つのphpへアクセスするというのが難しいのかとも思います。
sendObj.send("finish.php","POST");の結果をブラウザで開かずに、処理を行うためにはいったいどうしたらよいのでしょうか?

2006-12-29 14:38の質問
この質問は、30日間解決しなかったために自動的に質問が一旦閉じられました。

回答(1)

1.

2006-12-29 16:35:25ベター
たぶん、sendObjという1つだけのObjで2ヶ所を呼ぶからそうなるのではないかと。

var sendObj1:LoadVars = new LoadVars();
var sendObj2:LoadVars = new LoadVars();

とでもしておいて、

sendObj1.sendAndLoad("finish.php","POST");
sendObj2.send("リンク先フォームのphp","_self","POST");

なら出来そうな気がするけど時間が無いので確認してません(^^;ネンマツナノデ
回答レベル : アドバイス

試してみたのですが、上手くいかなかったようです。
わざわざご回答ありがとうございました。

Ads By Google

コメント(3)

2006-12-29 18:02:12

どう上手くいかなかったですか?

・まだ窓が2つ開いちゃう
・1つしか開かないけどidが送れてない
・ActionScriptでエラーが出る
・その他

エラーが出るならその内容を教えてね。

#2.  963gi
2006-12-29 22:53:21

教えていただいたスクリプトでも窓が二つ開いてしまいました。

var sendObj1:LoadVars = new LoadVars();
var sendObj2:LoadVars = new LoadVars();
var receiveObj:LoadVars = new LoadVars();

sendObj1.sendAndLoad("finish.php",receiveObj,"POST");
sendObj2.send("リンク先フォームのphp","_self","POST");

という風に新たに仮の受け取り先を指定することで、窓が二つ開くことは無くなり、idも送れるようになりました。
やはり、1つだけのObjで2ヵ所を呼ぶことに問題があったようですね。

これで安心して年を越せそうです。アドバイスありがとうございました!

2007-01-08 16:30:20

アケオメ
とにかく出来たようで良かったです!

トラックバック(2)

トラックバックURL: