为什么我们要为检测其他类的输入制作单独的函数

这是来自CS50关于游戏开发的讲座。 我们已经有一个用于在main.lua中检测输入(即love.keyboard.keysPressed)的表格:

function love.keypressed(key)
    -- 将本帧按下的键添加到我们的按键表中
    love.keyboard.keysPressed[key] = true

    if key == 'escape' then
        love.event.quit()
    end
end

但我们仍然在main.lua中制作了另一个用于其他类使用的函数:

function love.keyboard.wasPressed(key)
    return love.keyboard.keysPressed[key]
end

使用示例(类名称:bird.lua):

-- 仅为示例代码,请忽略功能
if love.keyboard.wasPressed('space') or love.mouse.wasPressed(1) then
    self.dy = -5
    sounds['jump']:play()
end

可以在这里找到整个游戏的代码

感谢大家抽出时间阅读这个问题

编辑:从我所理解的来看,该

点赞
用户12230942
用户12230942

函数 love.keypressed(key) 不返回任何东西,并且在 main.lua 更新后,表 love.keyboard.keysPressed [key] 会重置,因此我们调用一个函数以在 特定时间 直接执行任何输入的检查(即 love.keyboard.wasPressed)。

2020-02-26 05:46:19
用户3329771
用户3329771

哈,我刚刚搜索同一个问题时发现了这个。我认为这是鸟类处理它自己的键盘检测/移动。

由于 love.keyboard.keypressed 是一个全局函数,它总是会执行,你必须在 main.lua 中放置检查你处于什么状态/处理鸟的移动,而通过将 waspressed 作为一个函数进行传递,鸟类保留与其关联的代码,main 保留更高层次的非特定代码。

2020-04-24 05:26:23