2010-11-24 34 views
1

Comment créer une interface pour interpoler quelque chose en utilisant C++? Par exemple, je veux effacer une image dans plus d'une durée de cinq secondes à l'aide d'un appel de fonction statique comme:Création de fonctions d'interpolation à l'aide de C++?

Graphics::FadeSurface(Surface mySurface, int FrameHeight, int NumOfFrames, 
    int FadeDirection, double Duration) 

J'ai une configuration codée en dur qui crée un objet pour chaque action tween qui doit être effectué . J'ai utilisé une variable DeltaTime qui garde la trace du temps écoulé depuis le lancement du programme pour contrôler la logique et autres. J'ai inclus un exemple (beaucoup moins raffiné) pour vous montrer un peu ce que je suis en train de faire:

Exemple logique Loop:


gameLoop(double DeltaTime){ 

    // ... 
    // logic 
    // ... 

    bool isItDone = otherClass.HaveFiveSecondsElapsed(double DeltaTime); 

    if(isItDone == true) 
     exit(1); 

    // ... 
    // logic 
    // ... 

} 

Exemple Tweening Classe:


other_Class::other_Class(){ 

    InitialTime = 0; 
    InitialTime_isSet = false; 

} 

bool other_class::HaveFiveSecondsElapsed(double DeltaTime){ 

    // Setting InitialTime if it hasn't already been set 
    if(otherClass.InitialTime_isSet == false){ 

     otherClass.InitialTime = DeltaTime; 
     otherClass.InitialTime_isSet = true; 

    } 

    bool toReturn = false; 

    if(DeltaTime - InitialTime > 5) 
     toReturn = true; 

    return toReturn; 

} 

Toute aide est grandement appréciée. Merci!

Répondre

1

J'ai construit un moteur Tween pour Java qui est assez générique pour être utilisé pour interpoler n'importe quel attribut de n'importe quel objet. La partie générique est réalisée via la définition d'une interface "Tweenable" que les utilisateurs doivent implémenter pour interpoler leurs objets.

Je vous encourage fortement à l'utiliser comme source d'inspiration pour construire votre moteur, ou directement le porter. Je peux aussi planifier un port fait maison en C++, mais il faudrait beaucoup de travail pour le maintenir à jour avec la version actuelle de Java (qui se développe très vite).

http://code.google.com/p/java-universal-tween-engine/

NB: J'ai fait une réponse plus élaborée sur ce moteur dans cette question:
Android: tween animation of a bitmap

+0

C'est exactement ce que je cherchais à faire - grâce une tonne pour cela. Ce qui est marrant, c'est que j'ai actuellement ce projet C++ sur moi et que je travaille sur un jeu Android en utilisant LibGDX, donc cela va parfaitement convenir à mes besoins:] – recursive404

+0

C'est sympa de voir ça utile :) N'hésitez pas à parler de votre projet les forums libgdx, il a une communauté merveilleuse. Une fois que j'aurai un site web dédié au Tween Engine avec des tutoriels, des showcase et des outils, je le porterai en C++ (d'abord) et ensuite .NET, pour qu'il soit totalement universel. –