macos – 如何在Swift中获取按下的键

我正在尝试学习 Swift语言,并在Youtube上学习了很多教程.由于它们大部分都是针对iOS的,我想制作这个版本的OSX版本: https://www.youtube.com/watch?v=8PrVHrs10to(SideScroller游戏)

我小心翼翼地跟着它,但是当我必须更新玩家位置时,我被困在大约22分钟的视频中.我的第一个问题是获得按键.我来自C#语言,所以我想找到类似的东西

If(Keyboard.GetState().IsKeyDown(Keys.Right))
    man.Position.x += 5 //player position

但这不存在,所以我想出了这个:

override func keyDown(theEvent: NSEvent!)
{
    updateManPosition(theEvent)
}
func updateManPosition(theEvent:NSEvent)
{
    if theEvent.keyCode == 123
    {
        man.position.x -= 2
    }
    else if theEvent.keyCode == 124
    {
        man.position.x += 2
    }
    else if theEvent.keyCode == 126
    {
        println("jump")
    }
}

我通过使用println(theEvent.keyCode)找到了相应的值(123/124/126),但如果我必须识别很多键,它就不是很有用了.
无论如何,它适用于这个游戏,玩家的位置发生变化.但我有一个探测器,即每次更新时都不会调用函数keyDown(每秒60次),这会阻止玩家顺利移动.

所以,这是我的问题:如何在每次更新时调用keyDown,并且有没有人有更简洁的方法获取按下的键?

谢谢

好的,我发现了如何更新,所以我在这里发布’因为它可能会帮助别人.想法是使用布尔值:
var manIsMoving:Bool = false

override func keyDown(theEvent: NSEvent!) // A key is pressed
{
    if theEvent.keyCode == 123
    {
        direction = "left" //get the pressed key
    }
    else if theEvent.keyCode == 124
    {
        direction = "right" //get the pressed key
    }
    else if theEvent.keyCode == 126
    {
        println("jump")
    }
    manIsMoving = true //setting the boolean to true
}

override func keyUp(theEvent: NSEvent!)
{
    manIsMoving = false 
}

override func update(currentTime: CFTimeInterval)
{
    if manIsMoving
    {
        updateManPosition(direction)
    }
    else
    {
        cancelMovement()
    }
}

它可能会帮助别人.但获得按键的字符仍然不清楚……

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...