素材とサーバーデータの連動

 素材とサーバーデータの連動
  
  
  いわゆるタケノコの作り方です。
  
  タケノコの座標のように、ステージにいる全ユーザーでデータを共有するには、
  サーバーにデータを保存して共有する必要があります。
  
  このページでは、
  ・素材でサーバーデータを更新する方法
  ・素材でサーバーデータの変化を受け取る方法
  の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にサンプルコードがのってるので
  興味のある人はのぞいてみてください。