【发布时间】:2014-10-08 20:35:03
【问题描述】:
如果主窗口在 Window.cpp 类中处理,我正在编写一个 SFML 程序。我还有一个 ScreenManager 类来处理不同的屏幕。在我的 newMapScreen 类中,我需要从用户那里获取文本输入来命名他们正在创建的地图。我通过在这个 newMapScreen 类中传入 Window 创建了一个事件循环,但它注册事件的速度非常慢。用户必须按住按钮 1 秒以上,程序才能注册输入的密钥。我需要像 if(sf::Keyboard::isKeyPressed(sf::Keyboard:::Key)) 那样获得实时文本输入。还有什么方法可以在不检查键盘上的每个键的情况下使用键盘?无论如何,我可以处理来自窗口类的文本输入并在我的 newMapScreen 类中访问它?我很难理解抱歉的家伙。 我目前收到这样的输入:
void newMapScreen::updateWithWindow(sf::RenderWindow &Window)
{
while(Window.pollEvent(event))
{
switch(event.type)
{
case sf::Event::TextEntered:
if(onEnterMap)
{
if(event.text.unicode >= 32 && event.text.unicode <= 126)
{
mapNameS += (char)event.text.unicode;
}else if(event.text.unicode == 8 && mapNameS.getSize() > 0)
{
mapNameS.erase(mapNameS.getSize() -1, mapNameS.getSize());
}
}
if(onMapSizeX)
{
}
if(onMapSizeY)
{
}
break;
}
}
}
【问题讨论】:
-
先检查
sf::event!然后检查是否是键盘事件。