我需要一些建议。我正在制作一个游戏,有两个类:
Graphics Sprite Sprite类包含图像缓冲、偏移量(x,y)以及宽度和高度。Graphics类有一个屏幕缓冲区,可以像Sprite的图像缓冲一样将内容贴到其中。
有没有推荐的方法可以将Sprite的图像缓冲区贴到Graphics屏幕缓冲区?我有两个想法:
在Sprite类中创建一个如下的方法:
```java public void blit_to(buffer) { buffer.blit(this.image_buffer, this.offset) } ```
或者,在Graphics类中创建一个如下的方法:
```java public void blit(sprite) { this.buffer.blit(sprite.image_buffer, sprite.offset) } ```
你有什么建议吗?谢谢!
或者在图形类中使用以下代码:
甚至包括这个(同样在图形类中):
Graphics Sprite Sprite类包含图像缓冲、偏移量(x,y)以及宽度和高度。Graphics类有一个屏幕缓冲区,可以像Sprite的图像缓冲一样将内容贴到其中。
有没有推荐的方法可以将Sprite的图像缓冲区贴到Graphics屏幕缓冲区?我有两个想法:
在Sprite类中创建一个如下的方法:
```java public void blit_to(buffer) { buffer.blit(this.image_buffer, this.offset) } ```
或者,在Graphics类中创建一个如下的方法:
```java public void blit(sprite) { this.buffer.blit(sprite.image_buffer, sprite.offset) } ```
你有什么建议吗?谢谢!
void Sprite::blit(SDL_Surface* screen)
{
// code goes here
}
或者在图形类中使用以下代码:
void Graphics::blit(Sprite sprite)
{
// code
}
甚至包括这个(同样在图形类中):
void Graphics::blit(SDL_Surface* aSpritesImageBuffer)
{
// code
}
但是这些方法都存在问题。在两个类中,我使用封装来隐藏精灵的图像缓冲区和图形组件的屏幕缓冲区。它们以常量形式返回,因此没有人可以在不使用类中提供的函数的情况下操纵它们。这是我的做法:
class Graphics
{
public:
const getScreenBuffer() const {return screenBuffer;}
private:
screenBuffer;
};
与精灵图像缓冲区相同。
因此,如果我尝试在我的主类中执行以下操作:
void handleRendering()
{
graphics.blit(sprite.getImageBuffer());
}
这样做并不好,对吧?
甚至可以说:
void handleRendering()
{
graphics.blit(sprite);
}
我认为这并不好:
void handleRendering()
{
sprite.blit(graphics.getScreenBuffer());
}
有没有更好的方法在不出现const到non-const等错误的情况下完成这个操作? << 我遇到了这样的错误。