使用 Corona SDK 的 JSON
2015-7-1 18:20:48
收藏:0
阅读:120
评论:1
我有一个可以使用的 JSON 库来载入一个瓷砖 ID 数组。当我直接从文件管理器中双击 main.lua 时,它工作得很好,但是当我打开 Corona 模拟器并从那里打开我的项目或者构建我的项目并在我的测试设备上运行时,它在我试图使用已载入的数据时给出了一个空引用错误。
这里是从 JSON 文件中载入表的函数:
function fileIO.loadJSONFile (fileName)
local path = fileName
local contents = ""
local loadingTable = {}
local file = io.open (path, "r")
print (file)
if file then
local contents = file:read ("*a")
loadingTable = json.decode (contents)
io.close (file)
return loadingTable
end
return nil
end
这是用法:
function wr:renderChunkFile (path)
local data = fileIO.loadJSONFile (path)
self:renderChunk (data)
end
function wr:renderChunk (data)
local a, b = 1
if (self.img ~= nil) then
a = #self.img + 1
self.img[a] = {}
else
self.img[1] = {}
end
if (self.chunks ~= nil) then
b = #self.chunks + 1
self.chunks[b] = display.newGroup ()
else
self.chunks[1] = display.newGroup ()
end
for i = 1, #data do -- Y axis ERROR IS HERE
self.img[a][i] = {}
for j = 1, #data[i] do -- Z axis
self.img[a][i][j] = {}
for k = 1, #data[i][j] do -- X axis
if (data[i + 1] ~= nil) then
if (data[i + 1][j][k] < self.transparentLimit) then
self.img[a][i][j][k] = display.newImage ("images/tiles/"..data[i][j][k]..".png", k*self.tileWidth, display.contentHeight -j*self.tileDepth - i*self.tileThickness)
self.chunks[b]:insert (self.img[a][i][j][k])
elseif(data[i + 1] == nil) then
self.img[a][i][j][k] = display.newImage ("images/tiles/"..data[i][j][k]..".png", k*self.tileWidth, display.contentHeight -j*self.tileDepth - i*self.tileThickness)
self.chunks[b]:insert (self.img[a][i][j][k])
end
end
end
end
end
end
当它到达 for i = 1, #data do 这一行时,它告诉我它正在尝试访问 nil 字段的长度。我在哪里出错了?
编辑:我感到有必要给出更明确的解释,我的问题是什么。从程序中,我得到的结果是不一致的。当我在文件管理器中选择 main.lua 并使用 Corona 模拟器打开它时,它工作。当我打开 Corona 模拟器并内部导航到 main.lua 时,它不工作。当我构建项目并在我的设备上测试时,它不工作。我真正需要的是一些关于 Corona 的 JSON 库和 APK 内部目录结构要求的洞察(目录嵌套限制、命名限制等)。如果有人想到可能导致我遇到的问题,请提出来!我对任何事情都持开放态度。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
不知道"path"的值,并且没有看到完整的错误信息,很难做出推测。但是Corona SDK使用四个基本目录:
最后三个,在模拟器中存在于项目的沙盒主文件夹中。在设备上,不知道这些文件夹真正在哪里。
对于您的情况,如果您的JSON文件将与可下载的应用一起包含,您的.json文件应与您的main.lua文件(或子文件夹)位于同一文件夹中,并在system.ResourceDirectory中引用。