Мой код на самом деле работает нормально, но если стереть этот код " all_e [0] .sprite.setTexture (all_e [0] .texture); ", то спрайт исчезнет, но есть код, выполняющий те же действия в моя функция создания объекта, которая имеет вид " e.sprite.setTexture (e.texture); "
Как я уже говорил, она работает нормально, но я не могу понять, почему мне нужно вызвать setTexture снова.
'' '
//my function to create entity.
Entity create_entity(std::string filename){
//create an entity to return.
Entity e;
//Setting both texture and sprite. -Bitmask for background.
e.image.loadFromFile(filename);
e.image.createMaskFromColor(sf::Color(255,255,255,255));
e.texture.loadFromImage(e.image);
e.sprite.setTexture(e.texture);
//Furter details. Not so important
e.sprite.scale(4,4);
e.id = "Hero";
e.sprite.setTextureRect(sf::IntRect(7,0,50,60));
e.debug_rect.setOutlineColor(sf::Color::Red);
e.debug_rect.setFillColor(sf::Color(0,0,0,0));
e.debug_rect.setSize(sf::Vector2f(47,60));
e.debug_rect.setScale(4,4);
e.debug_rect.setOutlineThickness(1);
e.sprite.move(100,100);
e.debug_rect.setPosition(e.sprite.getPosition());
return e;
}
' ''
void game(){
.
.//code
.
//Use the create_entity to create entity
all_e.push_back(create_entity("Sprites/hero.png"));
all_e[0].sprite.setTexture(all_e[0].texture); // !!!!! Why I need to setTexture again here???
.
.
.//code
.
}