通过SFML教程我试着编写一个小代码示例,随着时间的推移将窗口向右滑动,它的行为方式是我没想到的(窗口一直滑到底部) 。这是一个最小的例子,尽管getPosition
向setPosition
吐出的#include <SFML/Window.hpp>
#include <SFML/System/Clock.hpp>
#include <SFML/System/Time.hpp>
int main(){
sf::Window window(sf::VideoMode(800,600), "Aydin's Window");
window.setPosition(sf::Vector2i(10, 10));
sf::Clock clock;
while(window.isOpen()){
sf::Event event;
while(window.pollEvent(event)){
if(event.type == sf::Event::Closed)
window.close();
}
sf::Time elapsed = clock.getElapsedTime();
if(elapsed > sf::milliseconds(100)){
sf::Vector2i pos = window.getPosition();
window.setPosition(pos);
clock.restart();
}
}
return 0;
}
getPosition
可以预期此代码会将窗口保持在原位,而是在我的计算机上向右和向下滑动。我有一个朋友运行相同的代码。在他的机器上,它向左和向上滑动。发生了什么事?
编辑:当我创建没有装饰的窗口(sf :: Style :: None)时,窗口保持原样。我猜测setPosition
或{{1}}中的一个被标题栏偏移而另一个不是。