PDA

Volledige versie bekijken : Intervallen en meerdere opeenvolgende animaties


rolfdejonker
%Europe/Berlin %866 %2007, 21:47
Hallo!

Dikwijls gebruik ik verschillende setIntervals/functies om bijvoorbeeld buttonanimatie-effecten te creeeren. Nu heb ik een aantal opeenvolgende animaties (oude tekst fade uit, overgangseffect, nieuwe tekst fade in) gebouwd. Zie onderstaande code (fragment) voor een globaal idee. Nu gaat het in onderstaande code niet om de details, maar om de opzet van zo'n serie acties/animaties die elkaar opvolgen.

-zijn er betere (solidere) manieren om zoiets als dit aan te pakken? Een duwtje de goede richting op zou al helpen...(ik heb allicht last van de setinterval/function-tunnelvision!)
-kan het zijn dat een dergelijke code in de ene browsers prima werkt en in de andere hapert? (zelfde flash-player!)


function fAnimatie() {
clearInterval(ivAnimatieStart);
trace("nAnimatieId"+nAnimatieId);
trace("nTekstUitfadeId"+nTekstUitfadeId);
trace("nTekstInfadeId"+nTekstInfadeId);
//uitfaden
ivUitfaden = setInterval(fUitfaden, nAnimatieRefreshRate);
}
////Uitfaden
function fUitfaden() {
////tekst uitfaden
if (mcTeksten["mcTekst"+nTekstUitfadeId]._alpha>0) {
mcTeksten["mcTekst"+nTekstUitfadeId]._alpha -= nUitfadeRate;
} else {
mcTeksten["mcTekst"+nTekstUitfadeId]._alpha = 0;
clearInterval(ivUitfaden);
ivSchuiven = setInterval(fSchuiven, nAnimatieRefreshRate);
}
updateAfterEvent();
trace("fUitfaden "+mcTeksten["mcTekst"+nTekstUitfadeId]._alpha);
}
////Schuiven
var nEasingSchuif:Number = 5;
function fSchuiven() {
var nSchuifDoel:Number = Math.round(mcTeksten["mcTekst"+nTekstInfadeId]._width)+2;
trace(nSchuifDoel);
trace("asdf"+Math.round(mcFooterSchuif._width));
var nSchuifBreedte:Number = mcFooterSchuif._width;
mcFooterSchuif._width = nSchuifBreedte-((nSchuifBreedte-nSchuifDoel)/nEasingSchuif);
if (Math.round(mcFooterSchuif._width) == nSchuifDoel) {
mcFooterSchuif._width = nSchuifDoel;
clearInterval(ivSchuiven);
ivInfaden = setInterval(fInfaden, nAnimatieRefreshRate);
}
updateAfterEvent();
}
////Infaden
function fInfaden() {
if (mcTeksten["mcTekst"+nTekstInfadeId]._alpha<100) {
mcTeksten["mcTekst"+nTekstInfadeId]._alpha += nInfadeRate;
} else {
mcTeksten["mcTekst"+nTekstInfadeId]._alpha = 100;
clearInterval(ivInfaden);
//animatie id goedzetten
if (nAnimatieId == nAnimatiesTotaal-1) {
nAnimatieId = 0;
} else {
nAnimatieId++;
}
}
updateAfterEvent();
}

Ben benieuwd naar jullie ideeen!

Dank alvast,

Groet,

Rolf