Question

Comment référencer un bitmap sur la scène en Flash à l'aide d'ActionScript 3 ?

J'ai un bitmap sur scène en flash et à la fin du film, j'aimerais l'échanger contre le suivant dans la séquence avant que le film ne boucle.dans ma bibliothèque, j'ai 3 images, exportées pour ActionScript, avec le nom de classe img1/img2/img3.voici comment mes calques en flash sont disposés.

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

à la fin du film, j'aimerais échanger img1 avec img2, pour que le film tourne en boucle de manière transparente, puis idéalement échanger img2 (sur la couche 4) avec img3 et ainsi de suite jusqu'à la fin de mes images.

mais je n'arrive pas à trouver comment référencer les images qui ont déjà été mises en scène (au moment du design), quelqu'un a-t-il une idée de comment faire cela ?

Nous espérons que le film final chargera les images dynamiquement à partir du serveur Web (j'ai le code pour ce bit) et les affichera ainsi que img1/img2/img3.

Toute aide serait appréciée.

MODIFIER:

@81bronco , j'ai essayé cela mais le nom de l'instance est grisé pour les graphiques, cela me permettra uniquement de le faire avec des movieclips et des boutons.Je l'ai à moitié fait fonctionner en les transformant en moveclips et en effaçant les images du moveclip avant d'en ajouter un nouveau (en utilisant quelque chose de plus simple à quoi vanhornRF suggéré), mais pour une raison étrange, lorsque le masque apparaît, les images que j'ai effacées reviennent pour l'animation du masque.

Était-ce utile?

La solution

Pour référencer quelque chose sur la scène, vous devez donner un nom à l'instance de scène - et non donner un nom de classe au symbole dans la bibliothèque.

Cliquez sur l'élément sur la scène et regardez le panneau des propriétés.Il devrait y avoir une zone de saisie de texte juste au-dessus des zones de saisie pour les dimensions de l'article.Entrez un nom ici.

Ailleurs dans votre code, vous pouvez ensuite faire référence à cet élément sur scène par son nom d'instance.

Autres conseils

Cela devrait ressembler à ceci :

imageHolder.removeChild( imageIndex )

ou

imageHolder.removeChildByName( imageName )

et après ça

imageHolder.addChild( newImage )

Je ferais probablement quelque chose comme ça dans votre classe de documents

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

Je fais cela parce que je code toujours dans l'EDI flash et que son débogueur est très pénible à travailler la plupart du temps, il est plus facile de simplement tracer les variables, vous pouvez donc soit utiliser cette boucle for pour imprimer les noms d'objet des éléments actuellement sur votre scène, ou utilisez un programme de débogage pour rechercher également les objets.

Maintenant que vous avez les enfants et à quel index ils se trouvent réellement dans l'étape, vous pouvez les référencer en appelant getChildAt(int), vous pouvez supprimerChildAt(int), vous pouvez addChildAt(displayObject, int) et swapChildrenAt(int, int ).L'int dans ces arguments représenterait la position d'index renvoyée par votre instruction trace et le displayObject représenterait évidemment simplement tout ce que vous vouliez ajouter à la scène ou au DisplayObject parent.

En utilisant ces 4 commandes, vous devriez pouvoir réorganiser librement tous les clips vidéo que vous avez sur scène afin qu'ils semblent effectuer une transition transparente.

@ 81bronco One doit absolument nommer vos actifs sur scène si vous souhaitez les référencer de manière unique afin d'éviter toute confusion s'il finit par y avoir beaucoup d'éléments sur scène.

Hé Re0sless, lorsque vous supprimez ces éléments de la scène, y a-t-il des écouteurs d'événements qui leur sont attachés, des minuteries ou des chargeurs ?N'importe laquelle de ces choses peut faire en sorte qu'un objet reste dans la mémoire flash et ne soit pas retiré correctement.En plus de simplement supprimer l'élément, essayez peut-être de l'annuler également ?Parfois, cela aide à effacer ses références afin qu'il puisse être correctement détruit.

Bien sûr, cela pourrait aussi être quelque chose de stupide, comme supprimer l'élément à un moment donné ne supprime pas également l'élément des images futures, mais je ne pense vraiment pas que ce soit le cas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top