我正在尝试使用SFML进行游戏。
我正在创建一个sf :: RenderWindow但是当我尝试将窗口传递给另一个类时 它失败。我无法访问该窗口。因为我觉得分开是好事 处理“关闭窗口”等事件的类,但后来我无法访问它。怎么样 我能解决这个问题吗?
RenderWindow *window;
window = new RenderWindow(VideoMode(768, 614), "Tower Defence ver 2.0");
答案 0 :(得分:0)
RenderWindow位于命名空间'sf'
中也许你有某个地方“使用命名空间sf;”而在其他地方却没有。
尝试在每个地方使用sf :: RenderWindow作为前缀。
答案 1 :(得分:0)
您使用的是哪个版本的SFML?这在SFML 1.6中是不可能的,但是在SFML 2.0(即将发布的版本)中。
答案 2 :(得分:0)
创建一个头文件并定义你的函数
标头文件
#pragma once
#include "SFML/Graphics.hpp"
class MyClass
{
public:
sf::Sprite Sprite;
MyClass();
void Setup(sf::Texture& texture);
void Draw(sf::RenderWindow& window);
};
Cpp文件
#include "Bullet.h"
MyClass::MyClass()
{
}
void MyClass::Setup(sf::Texture& texture)
{
Sprite.setTexture(texture);
Sprite.setPosition(0, 0);
}
void MyClass::Draw(sf::RenderWindow& window)
{
window.draw(Sprite);
}
然后在你的游戏循环中绘制你可以调用这样的东西
// myClass is an object of type MyClass
// renderWindow is your sf::RenderWindow object
myClass.Draw(renderWindow);
希望这会有所帮助。如果您需要更多指导,请与我们联系。
答案 3 :(得分:0)
试试这个
class Foo
{
public:
Foo(sf::RenderWindow& ptrwindow)
: ptrwindow(ptrwindow)
{
// your code here
};
sf::RenderWindow* window()
{
return &this->ptrwindow;
}
private:
sf::RenderWindow ptrwindow;
};
int main()
{
sf::RenderWindow* mywindow = new sf::RenderWindow()
Foo myfoo(*mywindow);
myfoo.window()->create(sf::VideoMode(768, 614), "Tower Defence ver 2.0")
}