電子書籍の厳選無料作品が豊富!

はじめまして。
現在ASP.NET WebDeveloperでWebアプリケーションを構築しています。
今回は、ユーザインターフェースとビジュアルの向上を目指してFlashを取り入れようと思っています。
そこで必要になるのが、FlashとASP間での変数の受け渡し方法です。

目指している仕様は以下の通りです。
1.まず、FlashでボタンをクリックするとASPへ変数を送信します。
2.ASPで受け取った変数を元に計算をして、その結果をFlashに戻す。
3.Flashで受け取った値を表示する。

以上で教えていただきたい所は
・FlashからASPへ変数の値を送信する方法
・ASP側で受け取る方法
・ASPからFlashへ送信する方法
・Flashで値を受け取る方法

さまざまなページを検索して読んでみましたが、詳細まで掲載されているページが見当たりませんでした。
順を追って教えていただけると幸いです。
回答よろしくお願いいたします。

A 回答 (5件)

この場合の構成としては、


1.Flashを貼るページ
2.Webサーバーへのアクセスを提供するUIの無いページ(aspx)
の最低2つが必要です。2は、ページが表示されている必要は無い
はずなのですが、、表示されていないと、何かうまくいかなかった
でしょうか?

複数の値を送信する方法なのですが、XMLを送受信しているので、
そのXMLに載せてあげれば良いだけです。
やり方は人それぞれだと思いますが、私は下記のようなXMLを送受
信していました。
<XMLRoot>
<Value1>aaa</Value1>
<Value2>aaa</Value2>
<Value3>aaa</Value3>
</XMLRoot>

ご検討を祈ります。分からなければまた聞いてください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
二つのページが必要なのですね。早速試してみました。
先ほど記しましたが、無事に値を受け取り表示することが出来ました。

複数の値の受信方法ですが、これをQueryStringで受け取ったようにVBの変数に代入する方法はありますか?


xml.sendAndLoad("http://~", tes, "POST");
getURL("http://~", tes, "POST");

このようにXML.SendAndLoadの後にブラウザでページを開くためにgeturlでPOSTしているので、そちらで値を送信してしまっているのかもしれません。このような記述で問題はありませんか?

よろしくお願いします。

お礼日時:2006/12/26 23:17

ちょっと誤解があるようなので処理の流れを整理します。



1)Flash側で、xml.sendAndLoadでXMLデータ送信
2)ASP側で、呼び出し先のaspxのPage_Loadが動く
3)ASP側で、Page_Load内でResponse.WriteでXMLを書き出す
4)FLash側で、非同期用の通知メソッド(xml.onLoadに設
定した関数)が呼び出される。

こういう流れになるはずですが、ここまではOKでしょう
か?
sendAndLoadでググるとMacromediaのサイトがHitします。
そこを参考にするのも良いと思います。

この回答への補足

返信が遅れまして申し訳ありません。
一通りの流れは理解することが出来ました。

とても初歩的な質問かもしれませんが、FlashでXMLデータ送信をしてもブラウザで対象のASPのページを表示していないと値を受け取ることが出来ないのでしょうか。

FlashをASPのページに貼り付けるとページが表示された時点でPage_Loadが呼び出されてしまい、処理が出来ませんでした。Flashを貼り付けるためのページがもう一つ必要なのでしょうか。
Flashはどこに貼り付けるなどのページの構成を教えていただけないでしょうか。
よろしくお願いします。

補足日時:2006/12/26 13:35
    • good
    • 0
この回答へのお礼

自己解決いたしました。お騒がせしました。
Flashのスクリプトでgeturlを呼び出し、セットされた変数を送信し、ブラウザで対象のページを表示させました。
on (release) {
var tes = 10;
xml.sendAndLoad("http://~", tes, "POST");
getURL("http://~", tes, "POST");
name_txt.text = "送信完了";
}

ここでまた質問ですが、複数の値を送信するにはどういう方法を使えば良いでしょうか。
私が作ろうとしているアプリケーションは3つの値を送信する必要があります。
たびたびすみません。よろしくお願いします。

お礼日時:2006/12/26 14:16

QueryStringが入っていないのですね。


Request.Form(0)の方には何か入っていないでしょうか?

あと、コメントがサンプルコードと違っていました。
すみません。

×Request.QueryString(0)が無かったら
○Request.Form.Countが1以上だったら

です。

この回答への補足

ありがとうございます。
エラーは消えました。
どうやらコードをPageLoadに書いていたので、値が入る前に変数にアクセスしてしまったために出たエラーだったようです。
Button_Clickイベントに写したところエラーがなくなりました。

Flashで整数の10を送信して、Buttonをクリックして入っている値を表示させて見ましたが、

/wEPDwULLTEwNTUwMzcxMDZkZF5CtVkx67RanrwO8bshh3jlFqYJ

このような表示になっていました。

ActionScriptのほうは
on (release) {
var tes =10;
xml.sendAndLoad("Default.aspx",tes, "POST");
name_txt.text="送信完了"
}
このようになっています。
ActionScriptのほうが不適切なのでしょうか?

補足日時:2006/12/19 15:39
    • good
    • 0
この回答へのお礼

自己解決しました。

複数の値を送信する方法ですが、ActionScriptで配列を作成し送信しました。
それをそのままASPで受け取って表示させると「値,値,・・・」のようにカンマで区切られた状態で表示されました。
それをVBの文字列操作関数のSplitで「,」で区切ることにより取り出せました。
長い期間たくさんのアドバイスを頂きまして、ありがとうございました。
非常に助かりました。

お礼日時:2007/01/08 21:04

No1です。


そうですね。ここには載っていませんでしたね。

試行錯誤の上、実際には下記のようにしました(VB.NET)。
XML文字列を受け取ったら、後はXMLDocumentに読み込んで好きに処理できます。

Dim request_xml_str As String
If Request.Form.Count = 0 Then
request_xml_str = Request.QueryString(0)
Else
request_xml_str = Request.Form(0)
End If

調べてみると、sendAndLoadはFlashの開発環境ではクエリパラメタ
でXMLを渡そうとするのに対し、実際にHTMLに貼り付けて使う場合
にはForm変数として渡そうとする模様でした。
私はデバッグのやりやすさを考えて、Request.QueryString(0)が無
かったらRequest.Form(0)の値を使用するようにしました。ちなみ
に名前は無しで送られてくるので、インデックスでアクセスするし
かないようです。

この回答への補足

回答ありがとうございます。
PageLoadイベントに頂いたコードを記述したところ、エラーが出てしまいました。
request_xml_str = Request.QueryString(0) 
この行にインデックスが範囲を超えていますというエラーです。
0なのに範囲外というのはどういうことなのでしょうか・・・

補足日時:2006/12/19 12:26
    • good
    • 0

はじめまして。


Flashはまだ、なかなか情報が無くて苦労しますよね。
以前、同じような事をASP.NETで試みた事があります。

FlashとWebサーバとのやりとりは、XML.sendAndLoadを使用して、XMLでやりとりするのが最も応用がきいて良いです。
参考URLを見てください。

参考URL:http://www.flash-jp.com/modules/newbb/viewtopic. …

この回答への補足

回答ありがとうございます。
早速参考のURLを拝見させていただきました。
この情報を元に試してみたところ、ASPからFlashへ変数を渡すことに成功しました。

しかし、FlashからASPに値を渡すことができませんでした。
この場合はどのような方法を使えばいいのでしょうか?
重ねて回答よろしくお願いします。

補足日時:2006/12/18 23:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!