外部Flashムービーファイル
外部ムービーとは、swfAdvとは別にパブリッシュされたアニメーションFlashムービーやFlashアプリケーションを指します。
ゲーム内に動画を表示したい場合にも勿論ですが、swfAdvに無い機能や今から制作しようとするゲームにのみ特化した機能を
入れたい場合には、この外部Flashムービーを使うと便利です。
作り方
swfAdv内で使用するために特別な設定をする必要はありません。
普段のオーサリング通りにswfファイルへパブリッシュして下さい。
また、表示はswfAdvが行うので外部ムービーのHTMLファイルは必要ありません。
外部FlashムービーとswfAdvの連携機能
注意※模索中の機能につき、今後仕様が変更されるかもしれません。
読み込まれた外部FlashムービーとswfAdvは、それぞれ独立して動作しています。
これに、swfAdvから命令を発信し外部Flashムービーのアニメーション再生を制御したり、ムービー上のフォーム
インターフェースで取得した値をswfAdvに返す、等といった連携を行いたい場合は、外部Flashムービー側に
連携する機能を追加する必要があります。
swfAdv側には、シナリオファイルの
Movieコマンドという形で外部Flashムービーへ命令を発信する機能がありまので
この受け皿をムービー側に用意すれば、双方のやりとりができるようになります。
具体的には、Movieコマンドにより外部Flashムービー内のsetFunction()という関数へ、Movieコマンドの要素値/属性値が
送信されるので、ムービー側にその関数をスクリプト記述します。
下記の例では、要素値をキーにして簡単なアニメーション再生制御をしています。
例:外部Flashムービーの再生/停止制御をする
外部Flashムービーの1フレーム目に以下を記述する
/*
* swfAdv Movieコマンド受信メソッド
*
* @param command :Movieコマンドの要素値/属性値が収められたObject
*/
function setFunction(command:Object):Void
{
switch(command._nodeValue) //ノード値から処理を分岐する
{
case("ANIMATIN_PLAY"):
//外部Flashムービーのアニメーションを再生する
this.play();
break;
case("ANIMATION_STOP"):
//外部Flashムービーのアニメーションを停止する
this.stop();
break;
default:
//未定義のコマンド
}
}
上記スクリプトを記述された状態でパブリッシュし、swfAdvに読み込む。
シナリオファイルからは以下のコマンドを実行される。
<movie action="send" id="1">ANIMATIN_PLAY</movie> //アニメーション再生
<movie action="send" id="1">ANIMATION_STOP</movie> //アニメーション停止
※補足:Movieコマンドの値は、属性値は属性名で、要素値は_nodeValueという名のプロパティで収められたObjectで受け取られます。
イベント終了通知
上項目で送信されたMovieコマンドが実行される間、swfAdvは待機状態となりシナリオは進行しません。
外部Flashムービーの動作が終わりシナリオを再開しても良い段階になったら、下記スクリプトを実行し
swfAdvへ終了した旨を通知します。
import mx.events.EventDispatcher;
EventDispatcher.initialize(this);
dispatchEvent({type:"onComplete", target:this ,param:[外部Flashムービーからの戻り値:Object型]});
終了通知の際には、paramプロパティでswfAdvに戻り値を渡すことができます。
swfAdvで受け取られた戻り値は、ローカル変数としてゲーム内に保持されます。
例:何らかの入力集計を行う外部Flashムービー内で取得した集計結果を元に、シナリオを分岐させる
○外部Flashムービーに記述するスクリプト
function setFunction(command:Object):Void
{
switch(command._nodeValue)
{
case("getTotal"):
var _total:int;
・
・
・
集計処理をここに書く
・
・
・
var ret:Object = new Object();
ret.total = _total;
dispatchEvent({type:"onComplete", target:this ,param:ret}});
break;
default:
//未定義のコマンド
}
}
○シナリオファイルに記述するコマンド
<movie action="send" id="1" param="[集計に必要なデータ等]">getTotal</movie>
<divergence>
<select type="$total=>10"> //集計結果が10以上ならば
・
・
分岐先シナリオを記述
・
・
</select>
<select type="default"> //その他
・
・
分岐先シナリオを記述
・
・
</select>
</divergence>
最終更新:2007年07月23日 14:29