我正在尝试学习
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,并且有没有人有更简洁的方法来获取按下的键?
谢谢
好的,我发现了如何更新,所以我在这里发布’因为它可能会帮助别人.想法是使用布尔值:
原文链接:https://www.f2er.com/swift/319334.htmlvar 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() } }
它可能会帮助别人.但获得按键的字符仍然不清楚……