Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Blocage sur de la conversion de code de la v1.6 à v2.0  (Lu 2908 fois)

0 Membres et 1 Invité sur ce sujet

Bl4ckb0ne

  • Newbie
  • *
  • Messages: 34
    • Voir le profil
Blocage sur de la conversion de code de la v1.6 à v2.0
« le: Février 25, 2013, 11:28:14 pm »
Salut à tous.

Je bosse actuellement sur de l'animation en sfml, genre animer un sprite. J'ai fais quelques recherches sur le net, et je suis tombé sur ça http://www.sfml-dev.org/wiki/fr/sources/frame_anim_animated .

L'ennui, c'est que c'est en SFML 1.6, et que je bosse avec la version 2.0. J'ai presque tout converti, sauf un petit bout de code qui me résiste, dans la class Frame.

J'essaye divers passage par référence ou pointeur, mais j'ai toujours des erreurs =/

Frame.h

#ifndef FRAME_HPP_INCLUDED
#define FRAME_HPP_INCLUDED

#include <SFML/Graphics.hpp>

// Une Frame est composée d'un pointeur sur une image, d'un SubRect et d'une couleur
// La couleur par défaut d'une Frame est le blanc.
class Frame
{
    public:
    // Par défaut
    Frame(const sf::Color& newColor = sf::Color::White);

    // Par copie
    Frame(const Frame& Cpy);

    // Texture et Rect
    Frame(sf::Texture& newTexture, const sf::Rect<int>& newRect, const sf::Color& newColor = sf::Color::White);

    // Texture (Le Rect est au dimension de l'image)
    Frame(sf::Texture& newTexture, const sf::Color& newColor = sf::Color::White);

    // destructeur
    virtual ~Frame();

    // Accès public à l'image, au Rect et à la couleur
    sf::Texture& texture;

    sf::Rect<int> rect;

    sf::Color color;
};

#endif // FRAME_HPP_INCLUDED
 

Frame.cpp

#include "Frame.h"

// Par défaut
Frame::Frame(const sf::Color& newColor)
{
    texture = NULL;
    color = newColor;
}

// Par copie
Frame::Frame(const Frame& Cpy)
{
    texture = Cpy.texture;
    rect = Cpy.rect;
    color = Cpy.color;
}

// Texture et Rect
Frame::Frame(sf::Texture& newTexture, const sf::Rect<int>& newRect, const sf::Color& newColor)
{
    texture = newTexture;
    rect = newRect;
    color = newColor;
}

// Texture (Le Rect est au dimension de l'image)
Frame::Frame(sf::Texture& newTexture, const sf::Color& newColor)
{
    sf::Sprite sprite(newTexture);
    rect = sprite.getTextureRect();
    color = newColor;
}

// destructeur
Frame::~Frame()
{

}
 

Merci d'avance.

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Blocage sur de la conversion de code de la v1.6 à v2.0
« Réponse #1 le: Février 25, 2013, 11:51:07 pm »
j'ai toujours des erreurs
Lesquelles ? Où ?
Concrètement je ne vois pas trop ce qui pourrait changer dans la classe Frame entre la 1.6 et la 2.0, à part remplacer sf::Image par sf::Texture. (et tu peux utiliser getSize() pour obtenir la taille d'une sf::Texture)

Bl4ckb0ne

  • Newbie
  • *
  • Messages: 34
    • Voir le profil
Re : Blocage sur de la conversion de code de la v1.6 à v2.0
« Réponse #2 le: Février 25, 2013, 11:59:44 pm »
Ah oui, j'ai oublier de mettre les erreurs x)

|24|required from here|
|8|error: non-static reference member 'sf::Texture& Frame::texture', can't use default assignment operator|
 

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Blocage sur de la conversion de code de la v1.6 à v2.0
« Réponse #3 le: Février 26, 2013, 07:59:02 am »
Une référence doit s'initialiser à sa construction. Donc dans la liste d'initialisation du constructeur (je te laisse chercher sur Google si tu ne sais pas de quoi je parle -- c'est quand même un truc de base du langage).

Et évidemment, absolument rien à voir avec SFML ;)
Laurent Gomila - SFML developer

Bl4ckb0ne

  • Newbie
  • *
  • Messages: 34
    • Voir le profil
Re : Blocage sur de la conversion de code de la v1.6 à v2.0
« Réponse #4 le: Février 27, 2013, 12:10:15 am »
Bon, j'ai viré le symbole "&" devant la déclaration de la texture, et c'est réglé.

Faut vraiment que je relise le cours sur les références sur le SdZ x)

Merci beaucoup