0

SFMLでゲームを作ろうとしています。

sf::RenderWindow を作成していますが、ウィンドウを別のクラスに渡そうとすると失敗します。ウィンドウにアクセスできません。「ウィンドウを閉じる」などのイベントを処理するための別のクラスを作成するのが良いと思うので、アクセスできません。どうすればこれを修正できますか?

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

4 に答える 4

1

自分でヘッダーファイルを作成し、関数を次のように定義します

ヘッダーファイル

#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);

お役に立てれば。さらにガイダンスが必要な場合はお知らせください。

于 2015-08-07T00:06:00.850 に答える
0

RenderWindow は名前空間 'sf' にあります

たぶん、「名前空間 sf; を使用する」場所があるかもしれません。そしてそれは他の場所に欠けています。

どこでも sf::RenderWindow を前に付けてみてください。

于 2011-06-05T03:07:08.043 に答える
0

どのバージョンの SFML を使用していますか? これは SFML 1.6 では不可能ですが、SFML 2.0 (次期バージョン) では可能です。

于 2011-07-04T02:05:07.103 に答える