Почему мне нужно снова установить текстуру в основной функции? - PullRequest
0 голосов
/ 23 апреля 2020

Мой код на самом деле работает нормально, но если стереть этот код " 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
   .
 }
...