ユーザー設定値等、アプリを終了しても保持したい値を保存する方法です。
Cocos2d-xのC++版の『CCUserDefault』の代替となるものを探していたのですが、JavaScript版では『cc.sys.localStorage』を使用するようです。
作成する内容
実装内容
- アプリ起動時に起動時間を保存し、次回起動時に『前回の起動時間』として表示
- チェックボックスの値を変更時に保存し、次回起動時に値を読み込む
- スライダーの値を変更時に保存し、次回起動時に値を読み込む
- 『全て削除ボタン』により保存した値を全て消去する
作成するプログラムのデモ
下記のリンクから動作を確認できます。
デモは、『Cocos Studio 2』で『HTML5』パッケージを作成して『GitHub Page』にアップしたものです。
アップする方法は、下記の記事を参考にして下さい。
作業手順(Cocos Code IDE)
2.『app.js』の編集
- 『Cocos Code IDE』の画面左の『Explorer』で、『srcフォルダ』にある『app.js』をダブルクリックして開く
- 『app.js』の『HelloWorldLayer』を下記のように編集します。
var HelloWorldLayer = cc.Layer.extend({
ctor:function () {
this._super();
var mainscene = ccs.load(res.MainScene_json);
this.addChild(mainscene.node);
var labelTime = mainscene.node.getChildByName("LabelTime");
var checkBox = ccui.helper.seekWidgetByName(mainscene.node, "CheckBox");
var slider = ccui.helper.seekWidgetByName(mainscene.node, "Slider");
var buttonClear = mainscene.node.getChildByName("ButtonClear");
var date = cc.sys.localStorage.getItem("TIME");
if (date != null) {
labelTime.setString("前回の起動時間:" + date);
} else {
labelTime.setString("前回の起動時間:初回起動");
}
cc.sys.localStorage.setItem("TIME", (new Date()).toLocaleTimeString());
var check = cc.sys.localStorage.getItem("CHECK");
if (check != null) {
checkBox.setSelected(check);
} else {
checkBox.setSelected(false);
}
checkBox.addEventListener(function(sender, type){
switch (type) {
case ccui.CheckBox.EVENT_SELECTED:
case ccui.CheckBox.EVENT_UNSELECTED:
cc.sys.localStorage.setItem("CHECK", String(checkBox.isSelected()));
break;
}
}, this);
var perSlider = cc.sys.localStorage.getItem("Slider");
if (perSlider != null){
slider.setPercent(perSlider);
} else {
slider.setPercent(50);
}
slider.addEventListener(function(sender, type){
switch (type) {
case ccui.Slider.EVENT_PERCENT_CHANGED:
cc.sys.localStorage.setItem("Slider", slider.getPercent());
break;
}
});
buttonClear.addTouchEventListener(function(sender, type){
switch (type) {
case ccui.Widget.TOUCH_ENDED:
cc.sys.localStorage.clear();
labelTime.setString("前回の起動時間:初回起動");
checkBox.setSelected(false);
slider.setPercent(50);
break;
}
}, this);
return true;
}
});
以上で、作成作業は完了です。
実行して動作を確認してください。
使用した関数
『cc.sys.localStorage.setItem("キー", 値)』
機能 |
キーとして設定した文字列に関連付けて、値を保存します。 |
引数1 |
キー:文字列、任意の文字列を設定できます。 |
引数2 |
値:保存する値 |
『cc.sys.localStorage.getItem("キー")』
機能 |
キーに関連付けられた値を取得します。 |
引数 |
キー:文字列、保存時に設定した文字列を指定します。 |
『cc.sys.localStorage.removeItem("キー")』
機能 |
キーに関連付けられた値を削除します。 |
引数 |
キー:文字列、保存時に設定した文字列を指定します。 |
『cc.sys.localStorage.clear()』
あとがき
Mac上のシミュレータだけでなく、ブラウザ上、iOSシミュレータ上でも正しく動作しました。