2010-03-07 2 views
1

Je sais que jQuery, par exemple, peut faire une sorte d'animation. Je sais aussi qu'au cœur même de l'animation, il me faut une sorte de boucle pour faire l'animation. Quel est un exemple d'une telle boucle?Syntaxe de base pour une boucle d'animation?

Une réponse complète devrait idéalement répondre aux questions suivantes:

  • Quelle est une syntaxe de base pour une récursion d'animation efficace qui peut animer une propriété unique d'un objet particulier à un moment? La fonction doit pouvoir faire varier son objet cible et sa propriété.
  • Quels arguments/paramètres faut-il prendre?
  • Quelle est la bonne plage de réitération de la boucle? En millisecondes? (Si cela est un paramètre/argument de la fonction?)

SOUVENEZ-VOUS:

  • La réponse n'est pas nécessairement un langage spécifique, mais si vous écrivez dans une langue spécifique, s'il vous plaît préciser lequel.
  • La gestion des erreurs est un plus. {Rien n'est plus irritant (pour nos buts) qu'une animation qui fait quelque chose d'étrange, comme s'arrêter à mi-chemin.}

Merci!

+0

jQuery est open source, je vous suggère de regarder le code déjà disponible plutôt que de demander aux autres de faire votre travail pour vous. – meagar

+0

@meagar - J'ai du mal à lire le code jQuery, je ne sais pas pourquoi. Je vais essayer encore une fois, pour vous. – Moshe

Répondre

1

typiquement (pour jQuery au moins) ce n'est pas fait dans une boucle, mais plutôt dans une série de rappels.

pseudojavascript:

function startAnimation(element, endPosition, duration) { 
    var startPosition = element.position; 
    var startTime = getCurrentTime(); 
    function animate() { 
     var timeElapsed = getCurrentTime() - startTime; 
     if (timeElapsed > duration) { 
      element.position = endPosition; 
      stopTimer(); 
     } else { 
      // interpolate based on time 
      element.position = startPosition + 
       (endPosition - startPosition) * timeElapsed/duration; 
     } 
    } 
    startRepeatingTimerWithCallbackAndInterval(animate, 1.0/30.0); 
} 

Il est également possible d'utiliser des objets pour stocker des données de départ au lieu des fermetures.

Ceci ne répond pas complètement à tous les points de la question, mais c'est un point de départ.

+0

* using namespace my.knowledge; "fermetures" == undefined. * ** Anglais: ** Je ne suis pas sûr de ce que signifie "fermetures". – Moshe

+0

une fermeture fait référence à la fonction 'animate' pouvant accéder aux variables locales dans' startAnimation' même après que 'startAnimation' soit retourné. http://www.javascriptkit.com/javatutors/closures.shtml a quelques exemples d'entre eux en javascript – cobbal

+0

Cobbal - Merci. – Moshe

Questions connexes