在c ++的SFML 2.1中,是否有一个sf :: Keyboard函数检查字母表中是否有任何字母被按下?
我知道如何检查某个键是否被按下,如下所示:
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Key))
我是否必须键入所有这些:
if(sf::Keyboard::isKeyPressed(sf::Keyboard::A)&&sf::Keyboard::isKeyPressed(sf::Keyboard::B)&&sf::Keyboard::isKeyPressed(sf::Keyboard::C))
Run Code Online (Sandbox Code Playgroud)
...一路走来sf::Keyboard::Z,
还是有更简单的方法?
来自SFML网站:
许多程序员使用KeyPressed事件来获取用户输入,并开始实现疯狂的算法,试图解释所有可能的键组合以产生正确的字符.不要那样做!
sf::Keyboard::isKeyPressed用于检查按键是否被按下,这对于诸如移动之类的事情是有益的:只要玩家按下"左"键,我们就希望继续移动他们的角色.一个KeyPressed事件用于检查在按下时按下哪个键,这对于仅发生一次的事情是有益的:如果玩家使用空格键跳转,我们通常不希望它们一直保持跳跃,只要空格键是压制住了.
但是,在检查输入的文本时,这些解决方案都不是很好.在官方教程中,我们建议不要使用这些来检查文本输入 - 我们实际上已经针对这种情况给出了不同的事件.要做的恰当的事情是通过此处描述的TextEntered事件获取密钥的基于文本的内容.从事件中获取文本然后应用您需要的逻辑以确保其有效性,或者(如果可能)直接使用事件中的文本.
| 归档时间: |
|
| 查看次数: |
10087 次 |
| 最近记录: |