我試圖用SFML做一個遊戲。SFML通過渲染窗口
我在做一個sf :: RenderWindow,但是當我嘗試將窗口傳遞給另一個類 時,它失敗了。我無法訪問該窗口。因爲我認爲爲處理諸如「關閉窗口」等事件創建一個單獨的 類是很好的,但後來我無法訪問它。 如何解決這個問題?
RenderWindow *window;
window = new RenderWindow(VideoMode(768, 614), "Tower Defence ver 2.0");
我試圖用SFML做一個遊戲。SFML通過渲染窗口
我在做一個sf :: RenderWindow,但是當我嘗試將窗口傳遞給另一個類 時,它失敗了。我無法訪問該窗口。因爲我認爲爲處理諸如「關閉窗口」等事件創建一個單獨的 類是很好的,但後來我無法訪問它。 如何解決這個問題?
RenderWindow *window;
window = new RenderWindow(VideoMode(768, 614), "Tower Defence ver 2.0");
RenderWindow的是在命名空間 '科幻'
也許你在什麼地方 「使用命名空間SF;」並且在其他地方缺失。
嘗試在sf :: RenderWindow處處添加前綴。
您正在使用哪個版本的SFML?這在SFML 1.6中是不可能的,但是在SFML 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);
希望這有助於。讓我知道你是否需要更多指導。
試試這個
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")
}
你有內存泄漏,我懷疑'sf :: RenderWindow'無論如何都是可以複製的。 – Quentin 2017-10-30 10:29:55
請出示一個具有「給予」和「訪問」的代碼。 – 2011-06-04 22:47:47
下次請說明您正在使用哪個版本的SFML。 – tr9sh 2012-11-30 13:05:02