单击/按键时鼠标位置会发生变化?

时间:2013-07-07 20:44:44

标签: c++ c++11 keyboard mouse sfml

所以,我目前正在开发我的第一个游戏(和C ++应用程序)作为一个爱好,但我遇到了一个问题,我不知道如何解决它。任何帮助当然都值得赞赏。

我的问题如下:

每当我点击或按键盘上的某个键时,鼠标坐标会跳转到非常奇怪的值,然后在一秒后恢复正常。这会扰乱我对子弹轨迹的矢量计算等。

示例:http://puu.sh/3xjFq.jpg

正如您在我的控制台窗口中看到的那样,Y坐标从正确的值(628)跳转到(-858993460),然后跳到(65536),然后再次跳到正确的值。

我用来检索鼠标坐标的代码:

cout << "X: " << event.mouseMove.x << " Y: " << event.mouseMove.y << endl;

这也是我用来检索鼠标坐标以进行计算的相同代码。

我猜测我的问题的根源是SFML本身及其工作方式。什么是检索鼠标坐标的替代方案?

请注意,我在这方面仍然非常新(从上周开始),所以尽量保持一切尽可能简单。

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:3)

事件存储在SFML中的联合中。如果您不知道工会如何运作,您一定要阅读它(wikipedia)。总之,不同的变量在内存中共享相同的空间。当用错误的类型解释它们时,这显然会给你奇怪的值。

当你写:

event.mouseMove.x/y

成员xy的值仅在您正在查看的事件为sf::Event::MouseMoved时才有效。如果要在按下按钮时检查鼠标的坐标(即类型为sf::Event::MouseButtonPressed的事件),则必须使用

event.mouseButton.x/y