SharedObject クラス

 ここではSharedObjectクラスの説明をします。ゲームのハイスコア、入力した内容を記憶したりするにはこのSharedObjectを理解しておく事は大切です。一度入力した内容を再度入力しなくてもいいようにローカル側に保存してくれたりしてくれるJavaScriptのcookie(クッキー)の様なものですが、それよりも柔軟性があり便利です。

※share:共有する 読み方:シェア シェアドオブジェクト

SharedObject オブジェクト

SharedObjectオブジェクトはローカルにデータを保管するもの、FlashクライアントとComm Serverの間にデータを転送する事ができます。
上記のswfファイルはローカルにこのページにアクセスした事をデータにして保存しています。次にアクセスされたときに保管されているデータを取り出し、その数に1を追加しています。

FlashクライアントとComm Sever間のデータのやり取りはどの様なものがあるか説明します。 ゲームをWeb上に公開したとして、複数の人がそのゲームを遊びそれぞれのスコアを出してそれを保存し、一番最高点のみを保存してハイスコアとして表示させるという事もできます。

コンストラクタ
 SharedObjectインスタンスはコンストラクタ関数を使用して作成しません。新規ローカルに作成するためにはgetLocal()メソッドかgetRemote()メソッドを使用します。
プロパティ

SharedObjectのプロパティにはdataがあり、そのdataはSharedObjectのデータ容器となります。

dataのプロパティを削除する場合はdelete演算子を使用すれば削除する事ができます。その他にプロパティにundefinedかnull の値を代入すると入っている値を除去する事が可能です。


 次の例では訪問者がswfファイルにアクセスするたびに訪問回数を記録して出力しています。メインタイムラインの一フレーム目に書きのコードを記述してパブリッシュしてください。
var count_so = SharedObject.getLocal("counter");
if (count_so.data.counter == undefined) {
count_so.data.counter = "はじめて来てくれましたね!";
} else if (count_so.data.counter == "はじめて来てくれましたね!") {
count_so.data.counter = 2;
} else {
count_so.data.counter++;
}
trace(count_so.data.counter);
型指定する場合は下記を参照してください。count_so:SharedObjectのコロンシンタックスで型指定をしています。
var count_so:SharedObject = SharedObject.getLocal("counter");
if (count_so.data.counter == undefined) {
count_so.data.counter = "はじめて来てくれましたね!";
} else if (count_so.data.counter == "はじめて来てくれましたね!") {
count_so.data.counter = 2;
} else {
count_so.data.counter++;
}
trace(count_so.data.counter);

新規ローカルSharedObjectをgetLocal()メソッドで作成し、オブジェクトの名前(ObjectName)をcounterとします。

もしも count_so.data.counter がundefined(未定義値)だったら、 count_so.data.counter = "はじめて来てくれましたね!"とします。

一回目が"はじめて来てくれましたね!"なので、2回目訪問してくれたときは、count_so.data.counter = 2にします。

それ以降は保管されている数値に1を足して出力します。

count_soの_soはSharedObjectの接尾辞です。


ObjectNameには次の文字を含める事はできません。  ~ % & \ ; : ' , < > ? #
SharedObject.flush()メソッド

 このメソッドはSharedObject.dataのプロパティの保存を試みます。

シンタックス

myLocalSharedObject.flush()
myLocalSharedObject.flush(minimumDiskSpace);

flashではなくflush

minimumDiskSpace : 最小ディスク領域バイト数。この値が1024なら1024バイトが最小ディスク領域バイト数となります。

このメソッドの戻り値はブール値であり、true false "pending"のいずれかを返します。

※戻り値:処理の結果として返す値。

 簡単に説明すると、オブジェクトを保管する為のディスク領域が足りない場合は"pending"になりブールで保管が成功ならtrue、失敗したならfalseを返します。

※Pending : 宙ぶらりんで、未決定で  ペンディング

 ローカルに情報を記憶する事ができ、そのオブジェクトを保管する為の領域が確保できた場合ブール値はtrueを返します。割り当てられた領域が十分でない場合は文字列値(String値) の"pending"を返します。何かの理由で情報記憶域が確保できずflashがオブジェクトを保管できない場合かユーザーがこのドメインからのオブジェクトに対してローカル情報記憶域を永続的に禁止した場合はfalseを返します。


SharedObject.onStatus

SharedObject.onStatus はSharedObjectクラスのイベントハンドラです。 flush()メソッドを使用して、ユーザーにローカル保存領域を増やすように警告された(戻り値がpending)時に、それを許可、否定するかをユーザーが選ぶ事ができます。選択終了後、このonStatusが呼び出されcodeとlevelのプロパティが定義されます。

・オブジェクトを保存するスペースを追加しなかった時のcodeプロパティ値は"SharedObject.Flush.Failed"
level
プロパティ値は"error"

・オブジェクトを保存するスペースを追加した時のcodeプロパティ値は"SharedObject.Flush.Success"
level
プロパティ値は"status"

SharedObject クラスのメソッド一覧

メソッド

説明

SharedObject.clear()

共有オブジェクトのすべてのデータを消去し、ディスクから共有オブジェクトを削除します。

SharedObject.flush()

ローカル永続共有オブジェクトをすぐにローカルファイルに書き込みます。

SharedObject.getLocal()

現在のクライアントだけが利用できるローカル永続共有オブジェクトへの参照を返します。

SharedObject.getSize()

共有オブジェクトの現在のサイズ (バイト数) を取得します。

SharedObject クラスのプロパティ一覧

プロパティ

説明

SharedObject.data

オブジェクトの data プロパティに割り当てられた属性のコレクション。これらの属性は共有および保存することができます。

SharedObject クラスのイベントハンドラ一覧

イベントハンドラ

説明

SharedObject.onStatus

共有オブジェクトに対してエラー、警告、情報通知が送信されたときに呼び出されます。