微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

quick - cocos2d 本地数据存储

这两天用到了存储玩家本地数据,对于我这种小白,看了好多各种大神写的文章,下面只是我自己的理解,还望大神勿喷哦。

还是先贴代码,后面在解释啊。

创建一个脚本,名字大家随意啊。哈哈。

GAME_STATE_ENCRYPTION_XXTEA="XMJ"
GAME_STATE_ENCRYPTION_OPERATION_SAVE="save"
GAME_STATE_ENCRYPTION_OPERATION_LOAD="load"

DataStore = class( "DataStore")

function DataStore:init()
self._dataStore = {}
self._gameState = require( cc.PACKAGE_NAME..".cc.utils.GameState") --初始化gamestate(这个类是quick 自己api里面封装的)
self._gameState.init( function(param)
local returnValue = nil
if param.errorCode then
printError( "errorCode",param.errorCode )
else
if param.name == GAME_STATE_ENCRYPTION_OPERATION_SAVE then
local str = json.encode( param.values )
str = crypto.encryptXXTEA( str,GAME_STATE_ENCRYPTION_XXTEA ) --使用 XXTEA 算法加密内容
returnValue = { data = str }
elseif param.name == GAME_STATE_ENCRYPTION_OPERATION_LOAD then
local str = crypto.decryptXXTEA( param.values.data,GAME_STATE_ENCRYPTION_XXTEA ) --使用 XXTEA 算法解密内容
returnValue = json.decode( str )
end
end
return returnValue
end,GAME_STATE_ENCRYPTION_FILENAME,GAME_STATE_ENCRYPTION )

if io.exists( self._gameState.getGameStatePath() ) then
self._dataStore = self._gameState.load()
print( "savePath:"..self._gameState.getGameStatePath() )
end
end

--添加数据
function DataStore:setData( __key,__value)
self._dataStore[ __key ] = __value
self._gameState.save( self._dataStore )
end

--获取数据

function DataStore:getData( __key )
return self._dataStore[ __key ]
end


return DataStore

-----------------------------------------------------------现在介绍一些Quick 的 GameState------------------------------------------------------------

GameState是quick-cocos2d 中自有的一个用户数据存储类。如果你要用可以看一下 在framework/cc/utils/ 下

我用到的有

GameState.init(eventListener_,stateFilename_,secretKey_) 初始化、

GameState.load() 载入数据、

GameState.save(newValues) 保存数据、

GameState.getGameStatePath() 获取保存文件路径。

--------------------------------------------------------------------------------------------------------------------------------------

GameState.init(eventListener_,secretKey_)

参数
1.eventListener_,是载入或保存操作的时候调用函数
2.stateFilename_是保存的文件名,如果为空认的是state.txt,该文件会被保存到device.writablePath下。
3.secretKey_是 校验文件时所用到的密钥。

详细说下 eventListener(param)函数

param 有两个值为 {name = "",errorCode = nil }

name 又有两种值分别是 "load"和"save" (载入 or 保存)

errorCode又有三种值: GameState.ERROR_INVALID_FILE_CONTENTS--不合法的文件内容,即取出来的内容不是一个table GameState.ERROR_HASH_MISS_MATCH--文件被人为更改过 GameState.ERROR_STATE_FILE_NOT_FOUND--文件不存在

原文地址:https://www.jb51.cc/cocos2dx/341683.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐