love2d lua中的鼠标点击漏洞
2022-2-9 16:55:36
收藏:0
阅读:210
评论:2
下面是一个我自己写的有自我解释性的love2d程序示例。变量'state'决定游戏的状态,即'play'和'menu'。初始状态为'menu',期望在此处的第一次右键单击时,状态将更改为'play',并且在进一步的第二次右键单击时,由于结果是将变量printMsg设为true,因此在函数'love.draw()'内打印消息。
function love.load()
state ='menu'
end
function love.draw()
if printMsg == true then
love.graphics.print('mousepressed')
end
end
function love.mousepressed(x, y, button)
if state =='menu' and button == 1 then
state ='play'
end
if state =='play' and button == 1 then
printMsg = true
end
end
我在这里有2个问题:
即使在第一次单击时,程序也倾向于认为第一次单击也是第二次单击,因此会打印消息。
在不必创建一个变量'printMsg'来实际打印消息的情况下,我想在按下按钮的同时打印消息。我的意思是:
function love.load()
state ='menu'
end
function love.draw()
end
function love.mousepressed(x, y, button)
if state =='menu' and button == 1 then
state ='play'
end
if state =='play' and button == 1 then
love.graphics.print('mousepressed')
end
end
但不幸的是,这个没有任何输出。
任何答案都会得到赞赏。
原文链接 https://stackoverflow.com/questions/69893295
点赞
stackoverflow用户11740758
标准文本颜色为:黑色
而标准背景颜色也是:黑色
因此我猜它被打印出来了,但你看不见它。
在 love.draw()
中的 love.graphics.print()
前尝试使用 love.graphics.setColor(1, 1, 1, 1)
。
(在每个可绘制的对象之前)
2022-01-26 16:35:43
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在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中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
你进入了第二个 if 语句,因为你将
'play'
赋值给了state
,所以第二个 if 语句的条件为 true。如果只需要发生其中一个事情:
if state == 'menu' and button == 1 then state = 'play' elseif state == 'play' and button == 1 then love.graphics.print('mousepressed') end
或者
if button == 1 then if state == 'menu' then state = 'play' elseif state == 'play' then love.graphics.print('mousepressed') end end
或者如果只有这两个选项,你可以省略其中一个条件:
if button == 1 then if state == 'menu' then state = 'play' else love.graphics.print('mousepressed') end end
请注意,此打印不会产生任何输出。默认情况下,Love2d 在调用 love.draw 之前会清除屏幕。因此,在 love.draw 之外打印的内容不被考虑在内。
要么专门在 love.draw 中进行绘制,要么通过实现自己的 love.run 来避免清除帧缓冲区。