【cocos2dx 3.3 lua】09 lua配置文件读写
来源:互联网 发布:淘宝 店招 代码 编辑:程序博客网 时间:2024/06/06 02:22
用lua格式做配置文件或记录文件,代码如下:
--[[lua配置处理类读写lua格式配置文件Load 读取lua配置文件Save 写入lua配置文件GetConfig 获取当前缓存的配置--]]local LuaConfig = class("LuaConfig")LuaConfig._instance = nil-- 各种参数LuaConfig._config = nilLuaConfig._defFilePath = cc.FileUtils:getInstance():getWritablePath().."config.lua"LuaConfig._formatString = ""function LuaConfig:GetInstance() if LuaConfig._instance == nil then LuaConfig._instance = LuaConfig.new() end return LuaConfig._instanceendfunction LuaConfig:ReleaseInstance() if LuaConfig._instance ~= nil then LuaConfig._instance:Release() LuaConfig._instance = nil endendfunction LuaConfig:ctor()end-- 设置格式化输出缩进function LuaConfig:SetFormatString(formatString) self._formatString = formatStringend-- 序列化 准备存储 返回序列化后的字符串 缩进暂时为1空格 参数为nil时 处理_configfunction LuaConfig:Serialize(config, formatString) if config == nil then -- nil不处理 return "nil" end local serializedConfig = "" local formatString = formatString or self._formatString local tableFormatString = string.gsub(formatString, self._formatString, "", 1) -- table去掉一个缩进 -- 序列化操作 number boolean string table local paramType = type(config) if paramType == "number" then serializedConfig = serializedConfig..tostring(config) elseif paramType == "boolean" then serializedConfig = serializedConfig..tostring(config) elseif paramType == "string" then serializedConfig = serializedConfig..string.format("%q", config) -- 接受一个字符串并将其转化为可安全被Lua编译器读入的格式 主要防止使用if或其他关键字之类的作为key的情况 elseif paramType == "table" then serializedConfig = serializedConfig.."\n" serializedConfig = serializedConfig..tableFormatString.."{\n" for k,v in pairs(config) do serializedConfig = serializedConfig..formatString serializedConfig = serializedConfig.."["..self:Serialize(k).."]" serializedConfig = serializedConfig.." = " serializedConfig = serializedConfig..self:Serialize(v, formatString..self._formatString) serializedConfig = serializedConfig..",\n" end serializedConfig = serializedConfig..tableFormatString.."}" else print("can not handle this type:"..paramType) end return serializedConfigend-- 获取当前配置function LuaConfig:GetConfig() return self._configend-- 读取配置 同时返回读取到的配置 方便外部操作function LuaConfig:Load(path) if path == nil then path = self._defFilePath end local content = self:ReadFromFile(path) if content ~= nil then self._config = loadstring("return "..content)() -- loadstring载入后默认为function类型,需要加()以调用 end return self._configend-- 保存配置 参数为nil时 处理_configfunction LuaConfig:Save(path, config) -- 默认处理_config if config == nil then config = self._config end if path = nil then path = self._defFilePath end local isSuccess = false -- 设置缩进 self:SetFormatString(" ") -- 序列化 local serializedConfig = self:Serialize(config) if serializedConfig ~= nil then -- 存储到文件 isSuccess = self:SaveToFile(serializedConfig, path) end return isSuccessend-- 存储function LuaConfig:SaveToFile(content, path) local isSuccess = false local file = io.open(path, "w") if file ~= nil then file:wirte(content) file:flush() isSuccess = true end io.close() -- 同file:close() 参数可传file,或默认关闭当前打开的 return isSuccessend-- 读取function LuaConfig:ReadFromFile(path) local content = nil --[[ 调用lua本身接口 可能有文件大小限制 据说是最大9K 未验证 local file = io.open(path, "r") if file ~= nil then content = file:read("*a") -- 读取所有内容 end io.close() -- 同file:close() 参数可传file,或默认关闭当前打开的 --]] ---[[ 调用cocos相关接口 content = cc.FileUtils:getInstance():getStringFromFile(path) --]] return contentendreturn LuaConfig
主要是其中的序列化部分,其他都比较容易理解。
阅读全文
0 0
- 【cocos2dx 3.3 lua】09 lua配置文件读写
- Cocos2dx(3.3)绑定lua
- cocos2dx lua解析csv成lua配置文件,方便程序调用
- lua: cocos2dx lua 加密
- cocos2dx lua
- cocos2dx+lua
- cocos2dx-lua
- Cocos2dx lua
- [cocos2dx lua]cocos2dx lua入门
- Lua,Lua API,配置文件
- cocos2dx 3.3 lua 绑定类
- 【Cocos2dx 3.3 Lua】定时器事件
- quick-cocos2dx cocos2dx.lua
- [cocos2dx-lua]"Hello Lua"分析
- cocos2dx lua自定义lua-binding
- [cocos2dx-lua]cocos2dx-lua环境搭建
- 【cocos2dx 3.3 lua】01 新建工程与lua加密
- lua学习:lua作配置文件
- hibernate 学习细节二
- JS中的继承机制
- 对于Java的swing包中的列表框组件的用法
- openGL ES进阶教程(二)之全景图片
- java cookie跨域操作
- 【cocos2dx 3.3 lua】09 lua配置文件读写
- 数据结构--排序算法--快速排序
- 数据库与文件进行数据存储有哪些区别?
- 蓝桥杯第六届决赛:表格计算
- BZOJ 2241 [SDOI2011] 打地鼠
- 超声波风速风向仪的工作原理
- 对象的序列化和Socket简单使用
- 求次最小生成树,南阳118题 修路方案
- 侦察兵_dp