对于事件类型(event.type)感到困惑的Lua。
2014-2-11 0:38:1
收藏:0
阅读:115
评论:2
我正在学习方向的书籍,但是我对代码中的 event.type 非常困惑。
以下是书中的代码:
portrait = display.newText("Portrait", display.contentWidth/2, display.contentHeight/2, nil, 20)
portrait:setFillColor(1, 1, 1)
portrait.alpha = 1
landscape = display.newText("Landscape", display.contentWidth/2, display.contentHeight/2, nil, 20)
landscape:setFillColor(1, 1, 1)
landscape.alpha = 0
local function onOrientationChange(event)
if (event.type == "landscapeRight" or event.type == "landscapeLeft") then
local newAngle = landscape.rotation - event.delta
transition.to(landscape, {time = 1500, rotation = newAngle})
transition.to(portrait, {rotation = newAngle})
portrait.alpha = 0
landscape.alpha = 1
else
local newAngle = portrait.rotation - event.delta
transition.to(portrait, {time = 150, rotation = newAngle})
transition.to(landscape, {rotation = newAngle})
portrait.alpha = 1
landscape.alpha = 0
end
end
整个方向更改函数似乎都是围绕着 event.type 进行的。我不理解它是什么,并且我也不明白它等于什么 (==)。当我更改它等于的字符串(在这种情况下是 'landscapeRight' 和 'landscapeLeft')时,它仍然可以接受任何值并且仍然可以正常运行。我完全没有弄明白它是如何工作的,请解释一下 event.type。
点赞
用户869951
希望你接受 MBlanc 的回答,我在这里稍微扩展一下:orientation 事件的 type 值是几个字符串中的一个,就像 MBlanc 的帖子中链接中所指示的那样。Event.type 永远不会是那些字符串之外的任何东西。因此,通过将比较更改为永远无法匹配 event.type 的字符串,你实际上是始终在进入 “else” 分支,就好像你的设备从未处于横屏状态:
local function onOrientationChange (event)
if (event.type == 'blabla1' or event.type == 'blabla2') then
...do stuff -- 但是永远不会运行,因为 event.type 永远不可能有那些值
else -- 因此,你的程序始终会到达这里:
...do other stuff...
end
end
这将使程序看起来一切正常,除了当你的设备真的处于横向右侧或左侧方向时,程序将执行 “else” 块而不是应该执行的块(第一个块)。
2014-02-11 17:56:11
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
在 Lua 中,使用字符串如
'landscapeRight'作为枚举字面量是一种常见的惯用法。对于
orientation事件,event.type保存了新的设备方向。在您提供的代码片段中,看起来您并没有调用或以其他方式参考定义后的
onOrientationChange。您应该使用以下方法将其附加到Runtime对象:Runtime:addEventListener('orientation', onOrientationChange)