sf::RenderWindow::getPosition()
始终返回0, 0
而不是正确的位置。
以下是重现问题的示例代码:
#include <iostream>
#include <memory>
#include <SFML/Graphics.hpp>
int main() {
std::unique_ptr<sf::RenderWindow> window_;
window_ = std::unique_ptr<sf::RenderWindow>(
new sf::RenderWindow(sf::VideoMode(800, 600), "asd", sf::Style::Default)
);
window_->setFramerateLimit(30);
window_->setVerticalSyncEnabled(false);
while (window_->isOpen()) {
sf::Event evt;
while (window_->pollEvent(evt)) {
if (evt.type == sf::Event::Closed) { window_->close(); }
}
window_->clear();
window_->display();
}
const sf::Vector2i wpos = window_->getPosition();
std::cout << "window position: " << wpos.x << "/" << wpos.y <<std::endl;
return 0;
}
事情是:例如我有一个MainMenu
课,我传递sf::RenderWindow *
(window_.get()
)。
当我从window_->getPosition()
致电MainMenu
时,它会报告正确的位置,因此getPosition()
本身没有错误。当我在同一范围内(在主要范围内)调用它时,这是唯一的错误。
我顺便使用SFML 2.3.1
答案 0 :(得分:6)
在while (window_->isOpen())
上循环后打印窗口位置。这意味着窗口已关闭,即当您调用getPosition()
时它不存在。因此,毫不奇怪,窗口位置未被正确报告,并且#34;因为窗口已经关闭(永久,所以它没有位置)。