ショックウェーブムービーのデータ受け渡しについて
[UP]
ショックウェーブムービーを用いてコンテンツを作成するにあたって、
スコアなどのデータをサーバに記録したり、ムービー間でデータの引き継ぎを
行うためにどうすればよいかを調査した結果、以下のような結論が得られた。
ショックウェーブはサーバへの
URLによるリクエストと文字列の受け取りのみをサポートしているため、
サーバに処理を渡すときにはCGIのQUERY_STRINGを利用し、CGIは必ず
文字列を返すようにすることで、サーバとのデータ受け渡しが可能である。
また、goToNetMovie()スクリプトを用いてムービーをロードする場合、
グローバル変数が引き継がれる。ただしこの場合、ムービーのステージサイズが
同じでないと画面が乱れる等の不具合が生じる。
今回は、ムービーをプレイしているユーザ名と、そのユーザの
スコアを記録する必要があるため、以下のような手順を用いた。
まず、最初のムービー。
- ユーザ名を入力させる
- CGIを用いてサーバにユーザ名を渡す
- サーバははじめての場合、ユーザ名の妥当性をチェック後ユーザ登録を行う。2回目以降はチェックのみ
- チェックの結果をステータス文字列で返す
- 次のムービーへユーザ名をグローバル変数の形で引き継ぐ
2つめ以降最後以外のムービー。
- ムービーはグローバル変数でユーザ名を受け取る
- CGIでユーザ名とスコアを渡す
- サーバはスコアをセーブ
- スコアが合格点以上ならば結果をステータス文字列で返す。
- 次のムービーへユーザ名をグローバル変数の形で引き継ぐ
- 不合格の場合はCGIで結果のHTML文書を生成、そちらへジャンプ
最後のムービー。
- ムービーはグローバル変数でユーザ名を受け取る
- CGIでユーザ名とスコアを渡す
- サーバはスコアをセーブ
- CGIで結果のHTML文書を生成、そちらへジャンプ
最初と2番目の図では呼ばれるCGIを一つのように表現しているが、
実際には2つの CGIを使い分けている。これは、サーバで判定する
ことによって反応時間が長くなることを防ぐためである。