2008-09-04 6 views
3

Comment référencer un bitmap sur la scène en Flash en utilisant ActionScript 3? J'ai un bitmap sur la scène en flash et à la fin du film je voudrais l'échanger pour le suivant dans la séquence avant la boucle du film. Dans ma bibliothèque j'ai 3 images, exportées pour actionscript, avec le nom de classe img1/img2/img3. Voici comment mes couches en flash sont définies.Comment référencer un bitmap sur la scène dans actionscript?

layer 5 : mask2:MovieClip 
layer 4 : img2:Bitmap 
layer 3 : mask1:MovieClip 
layer 2 : img1:Bitmap 
layer 1 : background:Bitmap 

à la fin du film, je voudrais échanger img1 avec img2, de sorte que le film boucles en toute transparence, puis idéalement img2 d'échange (sur la couche 4) avec img3 et ainsi de suite jusqu'à ce que j'arrive à la fin de mon images.

mais je ne peux pas savoir comment référencer les images qui ont déjà été mises en scène (en design), quelqu'un a une idée de la façon de faire cela? Le film de fin chargera les images dynamiquement du serveur Web (j'ai le code pour ce bit) et les affichera aussi bien que img1/img2/img3.

Toute aide serait appréciée.

EDIT:

@81bronco, j'ai essayé cela, mais le nom d'instance est grisés pour les graphiques, il ne me permettra de le faire avec MovieClips et boutons. Je l'ai à moitié travaillé en les transformant en clips, et en effaçant les images dans le clip avant d'en ajouter un nouveau (en utilisant quelque chose de plus simple que ce qui a été suggéré), mais pour une raison étrange, le masque démarre dans les images. Revenez pour l'animation du masque.

Répondre

3

Pour faire référence à quelque chose sur la scène, vous devez donner l'exemple de l'étape un nom - ne pas donner un nom de classe au symbole de la bibliothèque.

Cliquez sur l'élément sur la scène et regardez le panneau des propriétés. Il doit y avoir une zone de saisie de texte juste au-dessus des zones de saisie pour les dimensions de l'élément. Entrez un nom là-bas. Ailleurs dans votre code, vous pouvez vous référer à cet élément sur scène par son nom d'instance.

1

Il devrait être quelque chose comme ceci:

imageHolder.removeChild(imageIndex) 

ou

imageHolder.removeChildByName(imageName) 

et après que

imageHolder.addChild(newImage) 
0

je ferais probablement quelque chose comme ça dans votre classe de document

for(var i:int=0; i<numChildren; i++){ 
    trace(getChildAt(i),"This is the child at position "+i); 
} 

Je le fais parce que je le code encore dans l'IDE flash et son débogueur est si pénible de faire fonctionner la plupart du temps, il est plus facile de Il suffit de tracer les variables, de sorte que vous pouvez soit utiliser cette boucle for pour imprimer les noms des objets sur votre scène, soit utiliser un programme de débogage pour trouver les objets. Maintenant que vous avez les enfants et à quel index ils se trouvent dans la scène, vous pouvez les référencer en appelant getChildAt (int), removeChildAt (int), addChildAt (displayObject, int) et swapChildrenAt (int, int).L'int dans ces arguments représenterait la position d'index qui a été retournée par votre instruction trace et le displayObject représenterait évidemment tout ce que vous vouliez ajouter à la scène ou au parent DisplayObject. En utilisant ces 4 commandes, vous devriez pouvoir réarranger librement n'importe quel MovieClips que vous avez sur scène, de façon à ce qu'ils apparaissent transition transparente.

@ 81bronco On devrait nommer définitivement vos actifs sur la scène si vous voulez les référencer de manière unique spécifiquement pour éviter toute confusion s'il finit par être beaucoup d'articles sur scène

0

Hey Re0sless, lorsque vous retirez ces articles de Sur la scène, at-il des auditeurs d'événements attachés à eux, des minuteurs ou des chargeurs? N'importe laquelle de ces choses peut faire en sorte qu'un objet reste dans la mémoire flash et ne s'enlève pas correctement. En plus de simplement supprimer l'élément, peut-être essayer d'annuler également? Parfois, cela aide à effacer ses références afin qu'il puisse être correctement détruit.

Bien sûr, il pourrait également être quelque chose de stupide comme la suppression de l'élément à une instance ne supprime pas l'élément de futures images, mais je ne pense vraiment pas que ce soit le cas.

Questions connexes