我试图让我的光标精灵尝试出现在鼠标光标的顶部,但由于某种原因,它没有出现在鼠标光标的顶部。
代码:
cursorSprite.setPosition(sf::Mouse::getPosition().x, sf::Mouse::getPosition().y);
如您所见,我只是将setPosition()与我的精灵一起使用,并将其设置在鼠标的x和y位置。但是,这不起作用,并且光标精灵与我的实际鼠标光标所在的位置不同。
为什么?可能与我设置窗口的方式有关吗?
window(sf::VideoMode(800, 600, 32), "SFML Test", sf::Style::Default)
答案 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);
将在窗口坐标中。