OOP GUI 错误:main.lua:4: 尝试索引本地 (一个布尔值)...与模块有问题
2016-8-20 2:1:28
收藏:0
阅读:99
评论:1
今天我在尝试为我想要开始制作的LOVE2D游戏创建一个gui类。 我决定尝试使用OOP来使未来创建新菜单更容易。OOP工作得很好,直到我尝试将其放入它自己的模块中,它给我上面的错误。我已经多次检查了我的代码,与类似的代码进行了双倍和三倍的检查,但我找不到问题。我也查了一下,有类似的帖子,但没有对我的问题有帮助的东西。以下是相关的代码...
来自主.lua的
local gui = {
x = 0, y = 0,
width = 0, height = 0,
popupSpeed = 300,
active = false,
color = {red = 0, blue = 0, green = 0, alpha = 0},
menuType = "",
--buttons = require "Game/buttons"
}
并来自gui.lua...
local newGUI = require "Game/gui"
local menus = {
playerInv = newGUI.new()
}
function love.load()
menus.playerInv:createDropDown("right" , _, 30, 100, love.graphics.getHeight() - 60, 50, 128, 50, 255)
end
function gui.new()
newMenu = {}
for k, v in pairs(gui) do
newMenu[k] = v
end
return newMenu
end
function gui:createDropDown(direction, x, y, width, height, red, blue, green, alpha)
self.red = red
self.blue = blue
self.green = green
self.alpha = alpha
if direction == "right" then
self.x = love.graphics.getWidth() - width
self.y = y
self.width = width
self.height = height
self.menuType = "rightDropDown"
elseif direction == "left" then
self.x = 0
self.y = y
self.widthMax = width
self.height = height
self.menuType = "leftDropDown"
elseif direction == "down" then
self.x = x
self.y = y
self.width = width
self.heightMax = height
self.menuType = "regDropDown"
end
end
function gui:drawGui()
if self.active == true then
love.graphics.setColor(self.red, self.blue, self.green, self.alpha)
love.graphics.rectangle("fill", self.x, self.y, self.width, self.height, 10, 10, 6)
end
end
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的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 代码?

我假设第一段代码是游戏/gui部分,第二部分是main.lua。如果是这样,您正在尝试调用
.new()函数,但这个函数在您的Game/gui文件中显然不存在。您需要将gui的所有函数移动到它自己的文件中,包括gui.new(),gui:createDropDown和gui:drawGui(),最后,在它自己的文件中返回gui。您的主文件应该最终如下所示:
local newGUI = require "Game/gui" local menus = { playerInv = newGUI.new() } function love.load() menus.playerInv:createDropDown("right" , _, 30, 100, love.graphics.getHeight() - 60, 50, 128, 50, 255) end而Game/gui应该像这样:
local gui = {} -- With all the stuff inside function gui.new() -- With all the stuff it had inside end function gui:createDropDown() -- With all the stuff it had inside end function gui:drawGui() -- With all the stuff it had inside end return gui您看,您忘记将其功能移动到自己的文件中,并返回gui本身。不要忘记替换我在Game/gui中省略的内容!