2010-01-13 11 views

Répondre

1

YUI3 ne le supporte pas officiellement, mais vous pourriez faire quelque chose de très similaire en vous abonnant à l'événement tween et en modifiant les valeurs vous-même.

+0

Merci, ça marche aussi bien de déclencher un ensemble d'animations en même temps, mais elles ne correspondent pas parfaitement (vous pouvez voir de la gigue). Je vais devoir essayer l'approche tween un jour, mais cela nécessiterait aussi de calculer manuellement l'interpolation pour l'animation traitée dans l'interpolation ... –

3

Depuis que je déteste trouver non-réponses aux questions sur, je pensais que je serais la hauteur dans.

Je compris cela, grâce aux informations dans un rapport de bogue (http://yuilibrary.com/projects/yui3/ticket/2528886)

Voici ce que J'ai eu: deux boîtes, côte à côte. Je voulais que la boîte de gauche rétrécisse (en largeur) et en même temps la bonne boîte pour grandir.

(j'utilise divs, avec flotteur: gauche/flotteur droit et trop-plein. Caché, en raison de certaines décisions malheureuses que j'ai fait il y a quelque temps, mais cela devrait fonctionner pour la plupart des autres configurations)

Voici ce que je l'ai fait :


var anim = new Y.Anim({ 
     duration: 1.0 
}); 

var elmLeftBox = Y.one('#leftBox'); 
var elmRightBox = Y.one('#rightBox'); 

var intWidth = parseInt(elmLeftBox.getComputedStyle('width'), 10); 

anim.on('tween', function(e) { 
    var elapsedTime = this.get('elapsedTime'); 
    var duration = this.get('duration'); 
    var easing = this.get('easing'); 

    var leftPos = easing(elapsedTime, intWidth, (-1 * intWidth), duration*1000); 
    var rightPos = easing(elapsedTime, 0, intWidth, duration*1000); 
    elmLeftBox.setStyle('width', leftPos); 
    elmRightBox.setStyle('width', rightPos); 
}); 

anim.on('end', function(evt) { 
    //clean up after myself - don't want hardcoded widths 
    elmLeftBox.setStyle('width', 0); 
    elmRightBox.setStyle('width', '100%'); 
}); 

anim.run(); 

Fonctionne parfaitement. Bonne chance!