在游戏开发过程中,如果能将游戏数据保存在起来,当下次进入
游戏时该数据任然存在;
就像一般游戏保存游戏进度一样,对开发和测试都是很方便的,
特别是对于客户端不会服务器又想实现服务器端效果的开发者;
这里简要介绍CocosCreator开发中的本地数据存取
(sys.localStorage):
存储数据:cc.sys.localStorage.setItem(“key”,”value”)
获取数据:cc.sys.localStorage.getItem(“key”)
移除数据:cc.sys.localStorage.removeItem(“key”)
清除所有:cc.sys.localStorage.clear()
Demo1=>存储本地数据:
//分数写到本地( 当前分 最高分 历史记录)
updateScore:
function() {
var currentScore =
this.scoreDisplay.string;
var scoreData = {
'score':currentScore,
'time': D.common.timeFmt(
new Date(),
'yyyy-MM-dd hh:mm:ss'),
};
var preData = cc.sys.localStorage.getItem(
'score');
var preTopScore = cc.sys.localStorage.getItem(
'topScore');
if (!preTopScore || parseInt(preTopScore) < parseInt(currentScore)){
cc.sys.localStorage.setItem(
'topScore', currentScore);
}
if(!preData){
preData = [];
preData.unshift(scoreData);
}
else {
preData = JSON.parse(preData);
if (!(preData
instanceof Array)){
preData = [];
}
preData.unshift(scoreData);
}
cc.sys.localStorage.setItem(
'currentScore', currentScore);
cc.sys.localStorage.setItem(
'score', JSON.stringify(preData));
},
Demo2=>模仿UserDefault实现数据封装:
var LocalManager = {
setBool:
function(_key,_value){
cc.sys.localStorage.setItem(_key,_value.toString())
},
getBool:
function(_key){
return cc.sys.localStorage.getItem(_key) ==
"false" ?
false :
true
},
setInt:
function(_key,_value){
cc.sys.localStorage.setItem(_key,_value.toString())
},
getInt:
function(_key){
return Number(cc.sys.localStorage.getItem(_key))
},
setString:
function(_key,_value){
cc.sys.localStorage.setItem(_key,_value)
},
getString:
function(_key){
return cc.sys.localStorage.getItem(_key)
},
setObject:
function(_key,_value){
cc.sys.localStorage.setItem(_key,JSON.stringify(_value))
},
getObject:
function(_key){
return JSON.parse(cc.sys.localStorage.getItem(_key))
},
},
Demo3=>流程参考:
var BaseLocalData = {};
/*
* 写入数据,将数据存储在本地
* @param jsonName:json文件名字
*/
var baseData = [{a:
1},{b:
2},{c:
3},{d:
4},{e:
5},{f:
6},{g:
7}];
BaseLocalData.setItem =
function(jsonName)
{
var baseData = JSON.stringify(jsonName);
sys.localStorage.setItem(
"baseData", baseData);
};
/*
* 读取基础数据
* 还回json格式数据
*/
BaseLocalData.getItem =
function()
{
var baseData1 = JSON.stringify(baseData);
//将json格式转换成string
sys.localStorage.setItem(
"baseData", baseData1);
//将数据存储在本地
var baseDataa = sys.localStorage.getItem(
"baseData");
//从本地读取数据
baseDataa = JSON.parse(baseDataa);
//将string转换成json
return baseDataa;
};
/*
* 删除数据
*/
BaseLocalData.deleteItem =
function()
{
sys.localStorage.removeItem(
"baseData");
};