c'è qualche funzione dojo.fx.sleep da usare all'interno di un'animazione dojo.fx.chain?
-
20-08-2019 - |
Domanda
Vorrei fadeIn
un nodo per un secondo. Quindi lasciarlo acceso per 10 secondi. Quindi fadeOut
per altri 3 secondi. Un modo per concatenarlo sarebbe il seguente:
dojo.fx.chain([
dojo.fadeIn({node:myNode, duration:1000}), // fading in for 1 second
dojo.fadeIn({node:myNode, duration:10000}), // this does nothing for 10 seconds
dojo.fadeOut({node:myNode, duration:3000}) // fade out for 3 seconds
]).play();
Nel codice precedente, il passaggio centrale è un modo molto sciocco di non ottenere nulla. Esiste una sorta di dojo.fx.sleep
animazione che non fa nulla per un determinato periodo di tempo?
Soluzione
Non sono un utente dojo, ma il linguaggio comune di JQuery e Prototype è la proprietà delay, che sembra essere presente anche in Dojo:
dojo.addOnLoad(function() {
var animationArguments = {
node: “testHeading”,
duration: 1000, // ms to run animation
delay: 250 // ms to stall before playing
};
dojo.fadeOut(animationArguments).play();
});
Altri suggerimenti
Positivo non ci sono in questo momento; l'unico modo per ottenere l'effetto è dividere il codice in sezioni pre-sleep e post-sleep, cosa che hai praticamente fatto qui. L'unica cosa che consiglierei è che Dojo faccia il meno possibile durante la durata di 1o, ooo-millisecondo; come hai ora, viene chiamato il metodo fadeIn () e, sebbene probabilmente trascurabile, il fatto che stia eseguendo almeno un'istruzione condizionale (per verificare se è necessario modificare un'opacità o meno proprietà), è sicuramente un po 'più lento del semplice fatto che lo script non faccia nulla.