こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

flash javascript php の引数受け渡しで

http://61.197.170.205/~tobacco/htdocs/test.php

があり。戻り値があります。

javascriptに

var req_argument = null;
function File_Request(data, fileName){
//XMLHttpRequestオブジェクト(ブラウザー対策できてるものとして)
var http_obj = new XMLHttpRequest();
http_obj.open("POST", fileName);
http_obj.onreadystatechange = function(){
if(http_obj.readyState == 4){
req_argument = http_obj.responseText;
}
}
http_obj.setRequestHeader('Content-Type','text/plain;charset=UTF-8');
http_obj.send(data);
}

function flash_kick(argument) {
File_Request(argument, "http://61.197.170.205/~tobacco/htdocs/test.php");
return req_argument;
}

を設置したページを用意し、さらにactionscript上に以下と「bt_test」ボタン・「kakunin_text_box」のあるflashを配置しました。

import flash.external.*;
bt_test.addEventListener(MouseEvent.MOUSE_UP, test_action);
function test_action(e){
var argument:String = "渡したい引数";
var s:String = String(ExternalInterface.call("flash_kick", argument));
kakunin_text_box.text = s;
};

うまくいかず、http_obj.readyState == 4を待ってくれないのでnullが戻ってきます。

どのような処理をするとスムーズにphpの返り値をflashへ受け渡せるのか、ご教授いただけると嬉しいです。

質問用書き換え時に文法エラーあったらごめんなさい。

投稿日時 - 2010-04-05 06:41:03

QNo.5803504

困ってます

質問者が選んだベストアンサー

ActionScriptはあまりくわしくないのですが、
このままだと、確実にうまくいきませんね。
function flash_kick(argument) {
File_Request(argument, "​http://61.197.170.205/~tobacco/htdocs/test.php");​
return req_argument;
}
のreturn req_argument;は同期して実行されませんよね、
同期するためには、onreadystatechange のfunction内で、
フラッシュにデータを渡す必用があります。
ExternalInterfaceクラスのaddCallbackメソッドが使えるんじゃ
ないでしょうか?
import flash.external.*;
ExternalInterface.addCallback("setMessage", this, showMessage);
function showMessage(message) {
kakunin_text_box.text = String(message);
}
を別に書いておいて、
http_obj.onreadystatechange = function(){
if(http_obj.readyState == 4){
document["fromJavaScript"].setMessage( http_obj.responseText);
}
}

document["fromJavaScript"]は
Flashムービーにアクセスするための名前を付けるには,Flashムービーを表示する際の二つのタグである「objectタグ」と「embedタグ」の,それぞれid属性,name属性の値だそうです?

参考URL:http://itpro.nikkeibp.co.jp/article/COLUMN/20070118/259015/?ST=system&P=2

投稿日時 - 2010-04-07 15:38:48

お礼

addCallbackの事大変感謝です。ご回答いただいてから格闘していて、まだ実働できていない状態だったりします。

ただ、同時に友人からActionScript「new URLRequest」で直接PHPへアクセスする手段を教わり、この方法に今傾きつつ有る感じです。

addCallbackは知らなかっただけに大変参考になり、今後利用するチャンスもありそうで、とても助かりました。

ありがとうございます。

投稿日時 - 2010-04-09 16:17:08

ANo.1

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)