Encore merci
Edit :
J'ai donc ajouter l'attribut myImage dans ma classe, j'ai mis une méthode getImage() qui me renvoie l'image et que je traite dans le main, ça marche parfaitement. Mais toujours le même résultat pour le getSprite()
main.cpp
#include "Personnage.h"
#include "constantes.h"
// #include <iostream>
// #include <sstream>
#include <stdio.h>
#include <stdlib.h>
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
using namespace std;
using namespace sf;
int main()
{
sf::RenderWindow window(sf::VideoMode(LARGEUR_FENETRE, HAUTEUR_FENETRE), "Jeu");
window.setKeyRepeatEnabled(false);
window.setMouseCursorVisible (true);
window.setFramerateLimit(60);
sf::IntRect subRect(0,0,30,40);
sf::Vector2f position(0,0);
Personnage perso ("Eau/sprite.png", subRect, position);
// spritePerso2.setTextureRect(IntRect(30, 0, 30, 40));
sf::Event event;
while (window.isOpen())
{
while (window.waitEvent(event))
{
/*
window.clear(sf::Color::White);
*/
window.draw(perso.getSprite());
/*
sf::Texture mySprite1;
mySprite1.loadFromImage(perso.getImage());
sf::Sprite sp;
sp.setTexture(mySprite1);
window.draw(sp);
*/
if (event.type == sf::Event::Closed)
window.close();
window.display();
}
}
return 0;
}
Personnage.h
#ifndef PERSONNAGE_H
#define PERSONNAGE_H
#include <iostream>
#include <string>
#include <SFML/Graphics.hpp>
class Personnage
{
public:
Personnage(const std::string & filePath, sf::IntRect subRect, sf::Vector2f position);
virtual ~Personnage();
sf::Sprite getSprite();
sf::Image getImage();
/*
void recevoirDegats(int nbDegats);
void attaquer(Personnage &cible);
*/
protected:
private:
sf::Image myImage;
sf::Sprite mySprite[4]; //a changer
sf::Sprite spriteActuel;
};
#endif // PERSONNAGE_H
Personnage.cpp
#include "Personnage.h"
#include <string>
using namespace std;
Personnage::Personnage(const string &filePath, sf::IntRect subRect, sf::Vector2f position)
{
if(!myImage.loadFromFile(filePath))
{
cout << "erreur" << endl;
}
else
{
myImage.createMaskFromColor(sf::Color(255,0,255));
sf::Texture mySprite1;
mySprite1.loadFromImage(myImage);
for(int i=0 ; i<4 ; i++)
{
mySprite[i].setTexture(mySprite1);
mySprite[i].setTextureRect(sf::IntRect(30*i, 0, 30, 40));
}
spriteActuel = mySprite[0];
}
}
sf::Sprite Personnage::getSprite()
{
return spriteActuel;
}
sf::Image Personnage::getImage()
{
return myImage;
}
Personnage::~Personnage()
{
}
Voici le code que j'ai, en version light pour cibler le pb