【发布时间】:2014-02-16 05:10:57
【问题描述】:
我的文件中有这个 blocks.h:
#include <vector>
class Blocks{
public:
string files_name[4];
vector < Sprite > sprites;
void load(){
for(int i=0;i<=sizeof(files_name);i++){
Texture my_texture;
my_texture.loadFromFile(this->files_name[i]);
sprites[i].setTexture( my_texture );
}
}
Blocks(){
this->files_name[0] = "wall.png";
this->files_name[1] = "floor.png";
this->files_name[2] = "live.png";
this->files_name[3] = "coins.png";
this->load();
}
void show(int id, int X, int Y){
sprites[id].setPosition(X, Y);
window.draw(sprites[id]);
}
};
我没有错误,但我的游戏崩溃了。我认为,问题在于sprites[i].setTexture(...)
我只有消息:进程终止,状态为 -1073741819(0 分 2 秒)
我的 IDE 是 Code::Blocks 10.05,我有 Windows 8。
当然,在文件main.cpp中,我已经定义了窗口:
RenderWindow window( VideoMode(920, 640, 32 ), "Game" );
#include "blocks.h"
Blocks BLOCKS;
----更新: 好的,现在它没有崩溃,谢谢!但是,现在我看不到纹理!我阅读了 Benjamin Lindley 的帖子,并添加了一个带有纹理的新矢量。我的代码现在看起来像这样:
const int arraySize = 4;
string files_name[4];
vector < Sprite > sprites;
vector < Texture > textures;
并且,在load(),我有:
for(int i = 0; i < arraySize; i++){
Texture new_texture;
new_texture.loadFromFile(this->files_name[i]);
textures.push_back(new_texture);
sprites[i].setTexture(textures[i]);
然后它又崩溃了!
---更新:现在我再次更改了我的代码并且我没有崩溃,但我的纹理是white squares。我的纹理live.png 有效,但其他纹理是白色的!这是我的新代码:
Sprite new_sprite;
new_sprite.setTexture(textures[i]);
sprites.push_back(new_sprite);
【问题讨论】:
标签: c++ vector textures sfml sprite