Cocos2d-X与游戏开发cocos 2dxCocos开发

cocos2dx lua 文件路径获取

2017-11-15  本文已影响34人  亮亮同学

cocos2d-x技术群新群:117871561
c++技术交流群:593010226

1、简单介绍:
cocos2dx-lua中对文件的操作都用cc.FileUtils这个类进行操作,它是单一实例。
访问res目录:(fullPathForFilename(arg))
local fullPathForFilename =cc.FileUtils:getInstance():fullPathForFilename(“text.txt”)。如果该文件存放在该目录的其他文件夹下,也要相应的加上搜索目录。
判断文件是否存在:(isFileExist(arg))
local isExist =cc.FileUtils:getInstance():isFileExist(“text.txt”)
可写入目录:(getWritablePath())
local writablePath =cc.FileUtils:getInstance():getWritablePath()
2、实际操作:
--测试资源目录信息
local sharedFileUtils = cc.FileUtils:getInstance()
local function onClickMenu1(pSender)
           localfullPathForFilename = sharedFileUtils:fullPathForFilename(“text.txt”)
           print(fullPathForFilename)            --如果res目录下,没有text.txt文件,那么输出为空
           localisExist = sharedFileUtils:isFileExist(“text.txt”)
           ifisExist == true then
                     print(“text.txtexists”)
           else
                     print(“text.txtdoesn’t exists”)
           end
end
--读文件
local fullPathForFilename =sharedFileUtils:fullPathForFilename(“test.txt”)
local content =sharedFileUtils:getStringFromFile(fullPathForFilename)
print(content)
--路径搜索
getSearchPaths()                             --获得所有搜索路径集合
setSearchPaths(searchPaths)      --设置搜索路径集合
addSearchPath(path)                                --追加搜索路径
例如在新建的工程中,在main.lua中最开始的位置:
cc.FileUtils:getInstance():addSearchPath("src/")
cc.FileUtils:getInstance():addSearchPath("res/")
sharedFileUtils:purgeCachedEntries()            --清理搜索文件缓存,一般是更新资源后进行搜索前调用。
local searchPaths = sharedFileUtils:getSearchPaths()             --获得搜索路径的容器,返回值是一个table。
local writablePath = sharedFileUtils:getWritablePath()            --获得可写目录
local resPrefix = “res/”
table.insert(searchPaths, 1, resPrefix..”dir2”)
table.insert(searchPaths, 1, resPrefix..”dir1”)
table.insert(searchPaths, 1, writablePath)
sharedFileUtils:setSearchPaths(searchPaths)                                       --设置搜索目录
3、UserDefault用法
获取单一实例:    localuserDefault = cc.UserDefault:getInstance()
常用方法:
local ret = userDefault:getStringForKey(“string”,“defaultString”)
userDefault:setStringForKey(“string”, “realString”)
getDoubleForKey、setDoubleForKey
getFloatForKey、setFloatForKey
getIntegerForKey、setIntegetForKey
getBoolForKey、setBoolForKey
4、字典列表结构的属性列表文件:
比如:
<plist version=”1.0”>
           <dict>
                     <key>root</key>
                     <array>
                                <dict>
                                          <key>date</key>
                                          <string>2008-08-16</string>
                                          <key>content</key>
                                          <string>初始化</string>
                                </dict>
                                <dict>
                                          <key>date</key>
                                          <string>2016-08-16</string>
                                          <key>content</key>
                                          <string>欢迎使用</string>
                                </dict>
                     </array>
           </dict>
</plist>
那么读取上面数据:
local fileUtils = cc.FileUtils:getInstance()
local fullPathForFileName =fileUtils:fullPathForFilename(“notice.plist”)
local dict = fileUtils:getValueMapFromFile(fullPathForFileName)
for key, value in pairs(dict) do
           for i =1, table.getn(value) do
                     localrow = value[i]
                     localdate = row[“date”]
                     localcontent = row[“content”]
           end
end
5、访问根为列表结构的属性列表文件
<plist version = “1.0”>
           <array>
                     <dict>
                                <key>date</key>
                                <string>2010-08-04</string>
                                <key>content</key>
                                <string>初始化</string>
                     </dict>
                     <dict>
                                <key>date</key>
                                <string>2016-8-16</string>
                                <key>content</key>
                                <string>欢迎使用</string>
                     </dict>
           </array>
</plist>
读取上面数据
local fileUtils = cc.FileUtils:getInstance()
local fullPathForFileName =fileUtils:fullPathForFilename(“notice.plist”)
local vector = fileUtils:getValueVectorFromFile(fullPathForFileName)
for i = 1, table.getn(vector) do
           local row= vector[i]
           localdate = row[“date”]
           localcontent = row[“content”]
end

上一篇下一篇

猜你喜欢

热点阅读