尝试在 C++ SFML 代码块中设置帧率时出错

Error when trying to setFramerate in C++ SFML codeblocks

您好,我正在尝试设置一个球会在渲染窗口中弹跳的程序。我正在使用 SFML c++、iostream、codeblocks(如果有区别的话)。我知道我离完成还差得很远,而且我很可能会走错方向。但是,我确实知道的一件事是,为了让我的程序正常工作,我需要实施 sf::Window::setFramerateLimit(60);或者至少我的代码中就是这样。

include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
using namespace sf;

int main(){
RenderWindow window(sf::VideoMode(1500,800), "Bouncing Circle");
sf::Window::setFramerateLimit(60);

每当我尝试 build/run 我的程序时,我都会收到错误消息:

错误:无法调用没有对象的成员函数'void sf::Window::setFramerateLimit(unsigned int)'|

#include<iostream>
#include<SFML/Graphics.hpp>
#include<stdlib.h>
#include<time.h>
using namespace std;
using namespace sf;

int main(){
RenderWindow window(sf::VideoMode(1500,800), "Bouncing Circle");
sf::Window::setFramerateLimit(60);
srand(time(NULL));
int Rand1 = rand()%1500+1;
int Rand2 = rand()%800+1;
int x;
int y;
int BREAK = 1;
sf::CircleShape MyCircle(50);
MyCircle.setPosition(1,1);
MyCircle.setFillColor(sf::Color(500,0,0));

  while (window.isOpen())
 {

    sf::Event event;
    while (window.pollEvent(event));
    {
        if(event.type == sf::Event::Closed)
            window.close();

    }
    x = 1;
    y = 1;
    for(int ii = 0; ii < 675; ii++){

    x++;
    y++;
    MyCircle.setPosition(x, y);
    window.draw(MyCircle);
    window.display();
    window.clear();
    BREAK++;
    if(BREAK == 675){
        break;
    }
    }

}
return 0;
}

在您有 sf::Window::setFramerateLimit(60); 的地方尝试 window.setFramerateLimit(60); 这会将您创建的 window(名为 "window")的帧速率设置为每秒 60 帧。

sf::Window::setFramerateLimit(unsigned int);不是静态成员函数。所以你将有一个实例来调用它。简而言之:

int main()
{
  sf::RenderWindow win(sf::VideoMode(500, 500), "Title");

  win.setFramerateLimit(60);
  return 0;
}

SFML 文档警告我们使用此函数和 vsync!