SFML鼠标getPosition无法正常工作

时间:2018-07-07 10:36:44

标签: c++ sfml

我试图让我的光标精灵尝试出现在鼠标光标的顶部,但由于某种原因,它没有出现在鼠标光标的顶部。

代码:

cursorSprite.setPosition(sf::Mouse::getPosition().x, sf::Mouse::getPosition().y);

如您所见,我只是将setPosition()与我的精灵一起使用,并将其设置在鼠标的x和y位置。但是,这不起作用,并且光标精灵与我的实际鼠标光标所在的位置不同。

为什么?可能与我设置窗口的方式有关吗?

window(sf::VideoMode(800, 600, 32), "SFML Test", sf::Style::Default)

1 个答案:

答案 0 :(得分:2)

在窗口模式下运行SFML应用程序(以及几乎所有其他应用程序)时,应考虑两个主要坐标系:屏幕坐标和窗口坐标。 您得到错误的结果,因为FirefoxOptions options = new FirefoxOptions(); options.addArguments("--incognito"); options.addArguments("start-maximized"); // options.addArguments("--user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac\n" + "OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53"); options.addArguments("--user-agent=Mozilla/5.0 (Linux; Android 6.0.1; Nexus 6P Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36"); capabilities.setCapability(FirefoxOptions(capabilities), options); System.setProperty("webdriver.gecko.driver","/Users/abcd/Downloads/geckodriver"); WebDriver driver = null; 返回屏幕坐标中的单击位置,并且您希望单击窗口坐标中的单击。 您可以手动将屏幕坐标转换为窗口坐标,但是最好使用SFML提供的此接口:

sf::Mouse::getPosition()

sf::Vector2i pos = sf::Mouse::getPosition(window); 将在窗口坐标中。