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

Auteur Sujet: Objet invisible  (Lu 1611 fois)

0 Membres et 1 Invité sur ce sujet

yhu420

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
    • E-mail
Objet invisible
« le: Janvier 01, 2014, 11:41:33 am »
Bonjour tout le monde,
J'ai un problème avec un sf::rectangleshape qui n'apparaît pas à l'écran. Vous allez me dire "T'as oublié le draw" mais non, d'ailleurs je le fais d'une façon un peu sale qui consiste à appeler directement un pointeur vers la fenêtre principale. Allez voila le code:

//Avant tout, la position de leftdoor est -500,0 et rightDoor 1000,0
else if(une condition que j ai vérifiée: elle marche)
        {//Boucle while : tout le reste est censé rester immobile
                while(leftDoor->getPosition().x < 0.f) //BAhaha c'est sale! Je sais merci.
                {
                        leftDoor->move(1000.f * Var.deltaTime , 0.f); //leftDoor est un RSPrite, taille 500x600, et Var.toWindow est un sf::renderwindow* de taille 1000x600
                        rightDoor->move(-1000.f * Var.deltaTime, 0.f); //rightDoor idem: 500x600

                        Var.toWindow->clear(); //Var.toWindow est un pointeur global qui pointe vers l'unique fenetre de l'application
                        Var.toWindow->draw(*leftDoor); //la fonction draw arrive
                        Var.toWindow->draw(*rightDoor);

                        std::cerr << leftDoor->getPosition().x << "  " << leftDoor->getPosition().y << std::endl;
                }
                leftDoor->setPosition(0,0);
                rightDoor->setPosition(500,0);
//D'autres trucs encore
        }
 
voila pour mon fichier Menu.cpp

Pour que vous puissiez comprendre je vous met mon RSprite.hpp
#pragma once

#include <SFML/Graphics.hpp>
#include <iostream>

class RSprite : public sf::Drawable
{
public:
        RSprite(const std::string&, const float& width, const float &height);
        //Des methodes
        virtual void draw(sf::RenderTarget &target, sf::RenderStates states) const
        {
                target.draw(*m_Rshape);
        }

private:
        sf::RectangleShape *m_Rshape;
        sf::Texture *m_texture;
};
 

Ce a quoi je m'attendais c'était que leftdoor vienne de la gauche et move jusu'a couvrir la moitié de l'écran et idem pour rightDoor.
Ce qui se passe, c'est que lorsque la condition est effectuée, tout se freeze le temps que les doors arrivent, mais elles, n'apparaîssent pas à l'écran  :-\

J'espere que quelqu'un pourra m'aider  :P
Merci

kimci86

  • Full Member
  • ***
  • Messages: 125
    • Voir le profil
Re : Objet invisible
« Réponse #1 le: Janvier 01, 2014, 01:21:01 pm »
Bonjour,
Outre le fait que c'est sale (comme tu l'as remarqué), tu as oublié l'appel à display dans ta boucle.

yhu420

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
    • E-mail
Re : Objet invisible
« Réponse #2 le: Janvier 01, 2014, 04:56:34 pm »
Merci beaucoup pour ton aide, je savais que ca allait etre un erreur bête :p

 

anything