Bonjour 4ian,
je travaille encore sur l’objet Tableaux, et j’ai ajouté la possibilité d’afficher une image à la place d’un texte.
Pour afficher une image, l’utilisateur met en texte d’une des case :
Array::Picture=UNEIMAGE.png
J’ai crée une fonction qui affiche le texte ou qui mets l’image si l’utilisateur met ce qu’il y a ci-dessus :
[code]void ArrayShowerObject::DrawText(sf::RenderWindow& window,
std::string text,
float PosX,
float PosY,
sf::Color color,
sf::Font font,
int fontSize)
{
if(text.size() >= 15 && text.substr(0, 15) == “Array::Picture=”)
{
//On veut afficher une image
int imageNameSize = text.size() - 15;
std::string imageName = text.substr(15, imageNameSize);
if(actualScene->game->imageManager->HasImage(imageName) == true)
{
//actualScene est un pointeur initialisé dans la fonction "LoadRessources" et qui renvoi à la scène actuelle.
sf::Image imageToShow = *(actualScene->game->imageManager->GetSFMLImage(imageName));
sf::Sprite spriteToShow(imageToShow);
spriteToShow.SetPosition(PosX, PosY);
window.Draw(spriteToShow);
}
}
else
{
//Affichage d'un texte
sf::Text texte(text, sf::Font::GetDefaultFont(), fontSize);
texte.SetPosition(PosX, PosY);
texte.SetColor(color);
window.Draw(texte);
}
}[/code]
Ca marche très bien, sauf quand plusieurs cases (côte à côte) ont une image (pas forcément la même) : certaines cases affichent leur image, d’autre non, c’est assez aléatoire.
Si il y a qu’une case de mon tableau qui demande à avoir une image, l’image s’affiche dans tous les cas, mais c’est quand plusieurs cases qui demande des images, elles s’affichent pas toute.