SFML传递renderwindow

时间:2011-06-04 22:30:52

标签: c++ sfml

我正在尝试使用SFML进行游戏。

我正在创建一个sf :: RenderWindow但是当我尝试将窗口传递给另一个类时 它失败。我无法访问该窗口。因为我觉得分开是好事 处理“关闭窗口”等事件的类,但后来我无法访问它。怎么样 我能解决这个问题吗?

RenderWindow *window;  
window = new RenderWindow(VideoMode(768, 614), "Tower Defence ver 2.0");  

4 个答案:

答案 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")
}