Bonjour, j'ai un soucis avec Dojo (avec lequel je débute) et ces animations.
Je cherche a faire un effet de défilement d'image verticale infinie à partir d'une liste (UL/LI).
Pour ceci, je fais une boucle sur chaque enfant de mon UL et je stock la préparation des animations dans un array pour le combiner ensuite dans le but que chaque anim se lance en simultanné.
Une fois chaque animation terminé (onEnd) je veux vérifier si le LI est encore visible pour, dans le cas contraire, le passer en fin de UL avec place.
Le soucis c'est que j'ai l'impression que le onEnd ne garde en mémoire que ce que je lui ai paramétré dans la dernière animation de la boucle...
Pour le test, j'ai simplement crée une liste UI/LI avec 10 enfants et lors du lancement de la fonction, dans firebug/console, je n'ai que des 9 qui ressortent des fonctions onEnd. Il ressort le bon nombre de fois mais toujours à 9, 9 représentant donc uniquement le dernier LI parmi tout ceux de l'animation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 function lanceCol(objColonne) { var listLi = dojo.query('ul li', objColonne) ; // Selectionne les LI dans la colonne voulu var nbLi = listLi.length ; // Compte le nombre de LI var arrAnim = new Array() ; // Crée l'array de stockage // Pour chaque LI for(var numero=0; numero<nbLi; numero++) { var li=listLi[numero] ; // On récupère le LI pour une meilleur lisibilité var offsettop = dojo.style(li, 'top') ; // Récupére la position actuelle var neuOffset = offset + offsettop ; // Calcul la position finale // Crée l'animation et la stock arrAnim[numero] = dojo.animateProperty({ node : li, properties: {top: neuOffset}, duration:duree, onEnd: function(){ console.log(numero) ; // place(li, dojo.query('ul', objColonne, 'last') ; } }) ; } var anime = dojo.fx.combine( arrAnim ) ; return anime ; } dojo.ready(function(){ var anim = lanceCol(__selectedCols__) ; anim.play() ; }) ;
En gros, je voudrais avoir un event onEnd pour chaque animation malgré le combine. Je ne sais pas si c'est 'impossible' dans le sens ou le combine 'mergerait' toute les animations en une seule, ne laissant ainsi qu'un seul onEnd ou si c'est simplement une erreur de ma part niveau algo.
Précision : j'ai testé avec beforeBegin et onBegin et les résultats sont les même : dans la console, il ne me retourne que le dernier événement.
Si quelqu'un a une idée, je suis preneur
Partager