2010-08-16 2 views
0

J'utilise la Loader classe AS3.0 pour charger les images externes. J'ai besoin de charger une image aléatoire à chaque fois et j'utilise une minuterie pour charger une nouvelle image après 5 secondes environ. Quand je charge la première image, je l'appelle ...Chargement des images externes puis fondu entre elles à l'aide d'ActionScript 3.0 ...?

myMovieClip.addChild(loader); 

Après la première fois que je l'appelle ...

if (myMovieClip.numChildren > 0) { 
    myMovieClip.addChildAt(loader, 1); 
} 

Donc, cela devrait ajouter l'image nouvellement chargée derrière le premier .. Cela semble fonctionner ...

La prochaine étape que je veux faire est de fondre entre ces deux clips, de sorte que celui qui est devant s'efface en quelques secondes et est finalement enlevé quand il est invisible. Après quelques secondes, je charge le suivant et répète le processus.

À l'heure actuelle, je commence une minuterie et quand il se déclenche Je le fais ...

if (Loader(myMovieClip.getChildAt(0)).content.alpha <= 0) 
{ 
    // Check if the alpha value is 0...if so, remove the image and stop the timer 
    myMovieClip.removeChildAt(0); 
    timer.stop(); 
} 
else 
{ 
    // Increase transparency 
    Loader(myMovieClip.getChildAt(0)).content.alpha -= 0.1; 
} 

Le problème est que ma routine décoloration ne fonctionne pas. Une image se charge, et la suivante apparaît immédiatement quand le chargement est terminé. Mon code ressemble à un peu un hack ... Y at-il une façon plus agréable qui fonctionne réellement ...?

Répondre

2

Quelques pointeurs.

Avant d'ajouter une image, assurez-vous que son alpha est égal à 0, sinon votre image s'affichera instantanément.

Fox a raison, vous pouvez utiliser une classe pour gérer les évanouissements ou vos images, à savoir l'interpolation de la propriété alpha de l'image. Personnellement, je préfère utiliser TweenMax ou TweenLite (greensock.com), mais il existe de nombreuses classes différentes qui peuvent très bien s'en charger.

Vous pouvez utiliser l'événement onComplete de votre classe d'interpolation pour supprimer une image lorsqu'elle n'est plus visible.

Vous devez vous assurer que l'image suivante est chargée avant de commencer votre routine d'évanouissement, donc je suggère d'appeler l'image suivante dès que la précédente est chargée et d'avoir un booléen à vérifier avant de commencer la routine d'évanouissement .

+1

+1. Pour tweening, je suggère d'utiliser eaze: http://code.google.com/p/eaze-tween/ – back2dos

+0

n'a pas encore essayé celui-là :) thx! – PatrickS

+0

Je seconde TweenLite. L'événement onComplete est juste ce qu'il faut. – knuckfubuck

Questions connexes