今作っているiPhoneのゲームで、BGMの設定やハイスコアなどをアプリ内に保存したかったので、SharedObjectを使う事にしました。
SharedObjectはswfファイルでWebコンテンツを作っている頃から知っていました。
簡単に使えて良いと思っていたので、AIR for iOSでも使い方は同じかなとググっていたところ、、、こんな記事(「akihiro kamijo」)を見つけてしまいました。
こちらの記事を見る限り、そのままSharedObjectを使うともれなくリジェクトがもらえるそうです。
これを回避するため、AIR3.7以降でSharedObjectに追加されたpreventBackupという属性をtrueにすればOKということも、前述のページと同じサイト(「akihiro kamijo」)に載っていました。
ということで、Flash CCのAIRを3.8までアップして、早速SharedObjectを使ってみました。
//Shared Object
var so:SharedObject = SharedObject.getLocal("my_data");
var saveData:Object = so.data;
trace("so:"+so);
var isBgm:Boolean =true;
if(so){
if(saveData.isBgm !=undefined){
isBgm =saveData.isBgm;
trace("loaded from SO: isBgm:"+isBgm);
}
}
使い方は凄く簡単です。
例えば、今回作っているゲームではBGMのオンオフをSharedObjectに保存させるようにしています。
ルートの初期化フレームでSharedObjectを取得して、その状態にします。
SharedObject.preventBackup = true;
root.saveData.isBgm =root.isBgm;
so.flush();
trace("saved to SO: isBgm:"+isBgm);
そして、BGMのボタンでは、押される毎に状態をSharedObjectへ保存するようにしています。
これで、SharedObjectを使って、BGMだけでなくハイスコアも保存するようにしました。
ただ、あとはpreventBackupをtrueにしたことで、App Storeの審査を通ることができるかどうかは、申請してからのお楽しみということになります。
こちらが完成したゲームです!