FlashでCGIとやりとりしよう!
概要
(2000年公開)
FlashからCGIを呼んで、その結果で動いちゃおうって企画です。
CGIが呼べるとこんな感じのことができます。
好きな色のボタンを押したときにボタンの番号をCGIに渡してカウンタファイルを更新して、 結果をFlashが取得してグラフを表示する仕掛けになってます。
あっ、Flashでカウントアップしてるんじゃなくて、ちゃんとCGIで処理してますよ!(^^; その証拠にページの再読み込みをしても前回の数字を覚えてるでしょ!
FlashとCGIの組み合わせのいいとこは、 ページのリロードを行わないとこです。 普通、掲示板とかだと「書き込み」ボタンを押してCGIが動くと その結果は新しいページに表示するしかありません。 でもFlashと組み合わせると、そのページに結果を表示できるので 面白いことがいろいろできそうですね!
解説
CGIの呼び出し方法
CGIの呼び出しは簡単です。
とするだけです。
(「Load Variables」は「Load/Unload Movie」で「指定した場所に変数をロード」を選択します)
varsのとこは「GETを使用して送信」の他に「POSTを使用して送信」と「送信しない」があります。
「GET」「POST」を選択した場合は、すべての変数が送信されてしまうみたいです。
変数の指定はてきないみたい。
*****************************************************
<追記 2001/3/10>
CGI呼び出しをムービークリップにしてしまえば、
そのムービー内の変数だけが送信されるようです。
*****************************************************
サンプルでは3つのボタンにそれぞれ
Set Variable:"select" =1 ・・・(A)
Load Variables ("hogehoge.cgi", 0, vars=GET)
(省略)
としてます。この結果、CGIの呼び出しは
「select」の他に例えば「aaa」という変数を使用していると、
といったイメージになります。
ここまで分かっちゃえば使えますよね!
(A)のとこは1~3をボタンそれぞれに設定してます。
CGI側でこの値によって押されたボタンを判定しているわけです。
サンプルでは、パラメータを渡すことの実験のために、「GETを使用して送信」を使ってますが、
「送信しない」にしてURLをそれぞれ
hogehoge.cgi?select=2
hogehoge.cgi?select=3
と書いてもOKですね!
# このほうが無駄な変数の送信を防げるのでいいかも
CGIからの結果の取得
すでに「ピン!」ときてる人もいるでしょう!
「Load Variables」はテキストファイルの読み込みに使ったことがあるのではないでしょうか?
それと全く同じです!
CGI側でテキストファイルと同じ形式で返してあげればいいのです。
変数「a1」に「123」を「a2」に「456」を「a3」に「789」を返すなら
という文字列を返してあげるようにします。
CGIがPerlなら
print "a1=123&a2=456&a3=789";
こんな感じかな?
# テキスト形式を返すときは「text/plain」より「text/html」を使ったほうがいいらしいです。
また、CGIの処理が終わるまでのウェイト処理を忘れてはなりません。
これのためには、最後の変数、上の例だと「a3」の値が設定されるのを待つといいみたい。
もちろんCGIの実行前にa3の値はクリアしておく必要があります。
こんなイメージです。
フレーム | 概要 | アクション |
---|---|---|
フレーム1 | クリア | Set Variable:"a3" ="" |
フレーム2 | CGI呼び出し | Load Variables ("hogehoge.cgi", 0) |
フレーム3 | CGI終了判定 | If (a3 ne "") Go to and play (フレーム5) End If |
フレーム4 | ループ | Go to and play (フレーム3) |
フレーム5 | CGI実行後の処理 | (省略) |
まとめ
テキストファイルを読み込んで変数に設定するのと同じ!(^^;;
と、できちゃえば以外と簡単だった、CGIとのやりとりでした!
ダウンロード
上の解説で使用したサンプルファイルは、
こちらでダウンロードできます。
# CGIファイルは、環境によっては このままでは動かない可能性があります。
あらかじめご了承ください。
コメント
現在コメントはありません