2011-08-06 3 views
1

J'ai deux MovieClips à l'écran, et je veux appliquer le même masque pour les deux. J'ai mis les masques en utilisantAS3: Appliquer un masque à plusieurs MovieClips

mc1.mask = mymask; 
mc2.mask = mymask; 

Seul mc2 reçoit le masque. Comment puis-je définir le même masque pour deux MovieClips différents sans avoir à les placer tous les deux dans un MovieClip?

+0

La solution idéale pour mon problème impliquerait le clonage du masque. Cependant, il n'y a pas de fonction duplicateMovieClip dans AS3 et j'ai du mal à trouver une alternative. – Abdulla

Répondre

4

Faites du masque une classe et utilisez des instances de cette classe pour masquer chaque clip.

Votre classe aurait pu définir les propriétés ou si besoin est, vous pouvez passer des paramètres dans le constructeur pour plus de flexibilité ...

 
var mask1:MyMask = new MyMask(); 
var mask2:MyMask = new MyMask(); 

mc1.mask = mask1; 
mc2.mask = mask2; 
+0

Mes masques résident sur la scène sans définition de classe. Tout ce que je peux travailler avec est un nom d'instance. J'espère trouver une solution sans avoir à faire trop de changements car il y a beaucoup de masques dans mon fichier flash. – Abdulla

+0

Suite à votre autre commentaire, il devrait être possible de faire une copie du masque. La classe BitmapData a une [méthode clone] (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#clone()) bien que je doute que ce serait moins de travail que de faire du masque une classe! – PatrickS

+0

Maintenant que j'y pense, vous avez raison. Je devrais être capable d'utiliser Object (mask1) .constructor pour obtenir la classe et le travail du masque à partir de là. – Abdulla

5

si vous essayez d'appliquer le même masque à la fois de vos deux sprites pouvez définir les 2 objets sprite en tant qu'enfants d'un conteneur d'objets d'affichage et affecter le masque au conteneur.

+0

Les deux sprites sont déjà sur la scène. J'ai essayé de les ajouter à un conteneur MovieClip en utilisant addChild, puis de le masquer, mais cela ne semble pas fonctionner correctement. J'ai besoin d'une solution qui n'implique pas de retirer les sprites de la scène (et de les ajouter à un autre conteneur). – Abdulla

+0

+1 pour la meilleure solution pour moi – ericosg

Questions connexes