继承自sf :: RenderWindow
SFML实际上鼓励您从其类继承。
class GameWindow: public sf::RenderWindow{};
在这里,您可以为工程图实体创建成员工程图功能。
class GameWindow: public sf::RenderWindow{
public:
void draw(const Entity& entity);
};
现在您可以执行以下操作:
GameWindow window;
Entity entity;
window.draw(entity);
如果您的实体要通过使Entity继承自sf :: Sprite来保留自己的唯一子画面,则可以更进一步。
class Entity: public sf::Sprite{};
现在sf::RenderWindow
可以只绘制实体,实体现在具有setTexture()
和的功能setColor()
。实体甚至可以将子画面的位置用作其自己的位置,从而允许您使用该setPosition()
函数来移动实体及其子画面。
最后,如果您只有:
window.draw(game);
以下是一些快速的示例实现
class GameWindow: public sf::RenderWindow{
sf::Sprite entitySprite; //assuming your Entities don't need unique sprites.
public:
void draw(const Entity& entity){
entitySprite.setPosition(entity.getPosition());
sf::RenderWindow::draw(entitySprite);
}
};
要么
class GameWindow: public sf::RenderWindow{
public:
void draw(const Entity& entity){
sf::RenderWindow::draw(entity.getSprite()); //assuming Entities hold their own sprite.
}
};