【问题标题】:C++ SFML mouse movementC++ SFML 鼠标移动
【发布时间】:2012-06-24 09:13:34
【问题描述】:

我正在尝试检测鼠标移动事件并使用 sf::RenderWindow pollEvent 方法将其移回屏幕中间,并检测事件类型 sf::Event::MousePressed。问题是当我检测到鼠标移动时,我需要将鼠标移回屏幕中间,为此我使用 sf::Mouse::setPosition 但我认为(也许我错了)该函数本身调用sf::Event::MouseMoved 用的时候,怕是死循环了。

我这样做的方式示例:(我知道 0,0 它不是中间,它只是示例)

while (app.pollEvent(Event))
{
  if(Event.type == sf::Event::MouseMoved)
        {
            sf::Mouse::setPosition(0 , 0));
        }
}

对不起我的英语不好! 提前致谢!

【问题讨论】:

  • 如果这给您带来问题,只需在将鼠标移到那里之前添加一个检查以确保鼠标不在 (0, 0) 处。
  • 请不要移动鼠标!这太可怕了,根本不方便用户使用。说真的,不要这样做。你也不会遇到这个问题(因为我确定该功能不适合这种用途)。
  • 那么我应该怎么做呢?我想通过屏幕中间位置减去鼠标位置来检查每一帧鼠标移动的增量。

标签: c++ sfml


【解决方案1】:

尝试改用app.SetCursorPosition(x, y);

另外,我会跳过对事件的检查,因为无论如何您都希望光标在每帧末尾的中间结束。

【讨论】:

  • 我检查事件是因为我还在那里旋转相机,然后将鼠标返回到屏幕中间
  • 如果您尝试创建 FPP(第一人称视角)相机,我建议您使用 sf::Input 而不是鼠标事件。
猜你喜欢
  • 2023-01-22
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多