今作っている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を使ってみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//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を取得して、その状態にします。
1 2 3 4 |
SharedObject.preventBackup = true; root.saveData.isBgm =root.isBgm; so.flush(); trace("saved to SO: isBgm:"+isBgm); |
そして、BGMのボタンでは、押される毎に状態をSharedObjectへ保存するようにしています。
これで、SharedObjectを使って、BGMだけでなくハイスコアも保存するようにしました。
ただ、あとはpreventBackupをtrueにしたことで、App Storeの審査を通ることができるかどうかは、申請してからのお楽しみということになります。
こちらが完成したゲームです!