素材とサーバーデータの連動
いわゆるタケノコの作り方です。
タケノコの座標のように、ステージにいる全ユーザーでデータを共有するには、
サーバーにデータを保存して共有する必要があります。
このページでは、
・素材でサーバーデータを更新する方法
・素材でサーバーデータの変化を受け取る方法
の2点を説明します。
素材とサーバーデータの連動はこの2つで実現できます。
ちなみに、このように、素材とサーバーデータを連動させる仕組みを
BIND機能と呼ぶことにします。
※ BINDは、結びつける、縛りつけるの意
なお、このページを読む前に、素材でぽいの機能を使う方法を読むことをお勧めします。
素材でサーバーデータを更新する方法
素材でサーバデータを設定するには、ギコポイオブジェクトの、SetBindVariable()メソッドを使います。
SetBindVariable( 変数名, 値 )
SetBindVariableは引数に変数名と値を指定します。
変数名は任意の名前でOKです。
タケノコの場合は"takenoko"にしてます。
このメソッドを実行するとサーバー上にデータが保存されます。
実際のコードは次のようになります。
// ギコポイオブジェクト取得
var GikopoiObject = _level0.GetGikopoiObject();
// サーバーデータの設定
GikopoiObject.SetBindVariable( "takenoko", "0" );
この場合、"takenoko"というサーバー変数に対して"0"が設定されます。
サーバー変数は、ステージ毎に保存されます。
他のステージで設定した変数を受け取ることはできません。
グローバルなサーバー変数は今後実装予定です(時間とか天気とか)。
素材でサーバーデータの変化を受け取る方法
素材でサーバーデータの変化を受け取るには、次の2つの作業を行います。
(1) 素材でOnBind()関数を作成
… 変数が変化したときの素材の動作を記載
(2) XMLの設定
… どの素材とどの変数が連携しているのかをXMLに記載
XMLでの関連付けを忘れると素材のOnBind()が呼ばれないので注意してください。
素材でOnBind()関数を作成
OnBind()関数は、サーバー変数に変更があったときに、自動的に呼び出される関数です。
素材の1フレーム目で次のように記述してください。
function OnBind( ipBindVarName, ipBindValue )
{
// 変更があったときの処理
}
変更された値は、引数のipBindValueに格納されているので、
この値で素材に変化を与えてください。
ipBindVarNameには、サーバーの変数名が入っています。
通常、この値は無視してかまいません。
これは、複数のサーバー変数を同時に受け取る時だけ使います。
なお、OnBind()関数は、値の変更時以外に、
ステージにログオンした直後、1回だけ呼び出されます。
ただし、サーバー変数が全く設定されていない場合は、
ステージログオン直後でもOnBind()は呼ばれません。
ここらへん多少わかりにくいですが、使ってみればすぐわかると思います。
XMLの設定
サーバー変数との関連付けは、素材のbind属性に変数名を指定するだけです。
タケノコの場合、こんな感じになっています。
<p y="1" o_top="takenoko_idoA_mov" bind="takenoko">
この場合、
"takenoko"の値変更時、takenoko_idoA_movのOnBind()が呼び出されるようになります。
bind属性に"_all"を指定すると、全サーバー変数の変更を受け取るようになります。
サンプル
以上でBIND機能の説明は終わりです。わかりにくいと思うので、
実際にリソースキットのサンプルを動かすことをお勧めします。
「gikopoi_resource.fla」のcounter_movがBINDのサンプルです。
このサンプルは、クリックすると、クリック回数が表示されるというものです。
これを雛形に実験してください。
複数のデータを保存する方法
1つのサーバー変数に複数のデータを保存する場合、
ギコポイオブジェクトの
GetFieldValuesFromCsvLine()メソッドと
GetCsvQuotedValue()メソッドを使うことをお勧めします。
これは、複数のデータをCSVの形式で読み書きするためのメソッドです。
サンプルのobject_code_sample_movにサンプルコードがのってるので
興味のある人はのぞいてみてください。