Corona SDK pathToFile问题

时间:2013-05-31 08:26:04

标签: corona

在我的应用程序中,我有一个类似于以下的结构:

app (baseDirectory)
 |
 +-> config
      |
      +-> Levels

使用电晕时,我正在尝试自动加载Levels目录中的所有文件。以下是我目前的做法。 注意:确实在Windows上工作,而不是mac。

local dirPath = system.pathForFile('config/Levels')
for file in lfs.dir(dirPath) do
    if (file ~= '.' and file ~= '..') then
        -- require the file
    end
end

现在,如果我使用以下内容,它可以在Mac上运行,但不适用于'config / Levels'。

local dirPath = system.pathForFile('config')

我不确定这是一个错误还是我做错了什么。我认为,因为它适用于Windows但不适用于Mac,这将是一个错误。


因此,总结如何才能使用以上目录结构

local dirPath = system.pathForFile('config/Levels')

2 个答案:

答案 0 :(得分:1)

经过大量调试后,我找到了Mac的解决方案。下面是我在目录中获取文件的功能。适用于Windows和Mac。

必须在baseDirectory中有一个名为main.lua的文件。

-- path is relative to the baseDirectory
function getFiles(path)
    local filenames = { }
    local baseDir = system.pathForFile('main.lua'):gsub("main.lua", "")
    for file in lfs.dir(baseDir .. path) do
        if (file ~= '.' and file ~= '..') then
            table.insert(filenames, file)
        end
    end
    if (#filenames == 0) then return false end
    return filenames
end

问题是system.pathForFile('directory / subdirectory')在Mac上不起作用,因为它严格查找文件。只要它可以在baseDirectory中找到一些文件,你就可以追加相对路径来检索目标目录中的所有文件。

答案 1 :(得分:0)

一种解决方案是改变“级别”中的“级别”。 也许它区分大小写。 第二种解决方案是不在 config 文件夹中使用“levels”目录。 以下是我建议您整理文件的方法:

 app (baseDirectory)  
 |  
 +-> • configLevels  
     • configPlayer  
     • configOther