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_, stateFilename_, 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         --文件不存在

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值