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

Auteur Sujet: Screen transition  (Lu 3673 fois)

0 Membres et 1 Invité sur ce sujet

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Screen transition
« le: Novembre 27, 2012, 03:12:15 pm »
Salut !

J'ai voulu refaire un tutoriel que j'ai vu sur le net qui permet une transition (texte).
Le soucis est que si je fait ma transition dans une intervalle très proche sa marche impeccable ! mais si j'attend + de de 2sec la transition se fait très rapidement, je pense que cela viens de mon sf::Clock..

Voici mon code :

#include "FadeAnimation.h"

FadeAnimation::FadeAnimation()
{
    //ctor
}

FadeAnimation::~FadeAnimation()
{
    //dtor
}

void FadeAnimation::LoadContent(std::string text, sf::Texture, sf::Vector2f postion)
{
    Animation::LoadContent(text, texture, postion);
    time.restart();
    increase = false;
    fadeSpeed = 1.0f;
}

void FadeAnimation::UnloadContent()
{

}

void FadeAnimation::Update()
{
    if(active)
    {
        if(!increase) {
            alpha -= time.getElapsedTime().asSeconds() * fadeSpeed;
        }
        else {
            alpha += time.getElapsedTime().asSeconds() * fadeSpeed;
        }

        time.restart();

        if(alpha >= 1.0f)
        {
            alpha = 1.0f;
            increase = false;
        }
        else if(alpha <= 0.0f)
        {
            alpha = 0.0f;
            increase = true;
        }
    }
    else
    {
        alpha = 1.0f;
    }
}

void FadeAnimation::Draw(sf::RenderWindow &window)
{
    Animation::Draw(window);
}

void FadeAnimation::SetAlpha(float value)
{
    alpha = value;

    if(alpha == 0.0f)
        increase = true;
    else
        increase = false;
}
 


Merci.

lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
Re : Screen transition
« Réponse #1 le: Novembre 27, 2012, 03:31:23 pm »
Là tu incrémentes de getElapsedTime à chaque fois, en gros ton truc il fait si tu updates à chaque seconde:
0
0+1=1
1+2=3
3+3=6
6+4=10
etc
donc ouais c'est normal que ça aille vite ton truc il se fade en n² au lieu de se fader linéairement

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Screen transition
« Réponse #2 le: Novembre 27, 2012, 03:36:32 pm »
Et pourquoi lorsque je veut mettre fadeSpeed à 100.0f ou bien 0.01f rien ne change ?

lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
Re : Screen transition
« Réponse #3 le: Novembre 27, 2012, 04:13:21 pm »
Ben si ça doit changer normallement c'est juste que ta formule est fausse donc tu as ptet à vue d'oeil la même chose surtout si tu as un FPS super élévé. Tu peux essayer en forcant SFML à se limiter à genre 5 FPS pour voir par toi même

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Screen transition
« Réponse #4 le: Novembre 27, 2012, 04:37:49 pm »
Comment régler ce problème ?

lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
Re : Screen transition
« Réponse #5 le: Novembre 27, 2012, 04:45:34 pm »
change le 
alpha +=
par un
 alpha =

pour le -= je sais, je comprend pas à quoi il sert le flag "increase"

faudrait qu'on voit le tuto de base parce que là c'est pas bon...
« Modifié: Novembre 27, 2012, 04:51:06 pm par lezebulon »

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Screen transition
« Réponse #6 le: Novembre 27, 2012, 05:15:35 pm »