我正在使用C++
在SFML 2.3.2
中撰写游戏。它是2D和基于图块的。我希望窗口可以调整大小。而不是调整大小的窗口显示与原始世界相同的世界,我希望它显示更多。例如,调整大小的窗口中的字符将更小。
所以,在我的循环中,我首先处理输入。然后调用我的更新功能。然后我绘制到sf::View
,然后调用窗口的display()
函数。在我的input()
函数中,我创建了一个sf::Event
,然后我有一个while
循环window.pollEvent(event)
。然后我检查sf::Event::Resized
,然后我打电话给:
view.setSize(event.size.width, event.size.height);
然后我希望我的背景(sf::Sprite
)调整为视图的新大小。
background.setScale(
float(event.size.width) / float(this->game->background.getTexture()->getSize().x),
float(event.size.height) / float(this->game->background.getTexture()->getSize().y));
然后,我需要将它的位置设置为新的(0,0)。
background.setPosition(window.mapPixelToCoords(sf::Vector2i(0, 0)));
调整大小后,背景不会出现在新的(0,0)中。所以,当我按下" Space"时,我添加了相同的代码来运行。如果我按下空格,它将移动到正确的(0,0)。
所以,我想我的问题是,setPosition
是否需要一个完整的框架才能运行?