J'ai un conteneur MovieClip qui sert de zone de contenu que je dois masquer. Lorsque je crée un masque à l'intérieur de ce conteneur en utilisant une forme, je ne peux pas sembler interagir avec le contenu des autres conteneurs que je crée ici, comme les boutons, etc.Actionscript 3 et masques dynamiques
Ceci est ce que je fais dans le code (il me reste) toutes les importations de etc. de):
class MyContainer extends MovieClip
{
protected var masker : Shape = null;
protected var panel : MyPanel = null;
public function MyContainer()
{
this.masker = new Shape();
this.masker.graphics.clear();
this.masker.graphics.beginFill(0x00ff00);
this.masker.graphics.drawRect(0, 0, 1, 1); // 1x1 pixel.
this.masker.graphics.endFill();
addChild(this.masker);
this.panel = new MyPanel(); // has buttons and stuff.
addChild(this.panel);
this.mask = this.masker;
}
// called by it's parent when the stage is resized.
public function resize(width : Number, height : Number) : void
{
// set the mask to half the size of the stage.
this.masker.width = width/2;
this.masker.height = height/2;
// set the panel to half the size of the stage.
this.panel.resize(width/2, height/2);
}
}
Quand j'ajoute le masque (Shape) à la hiérarchie d'affichage, je ne peux plus interagir avec ce boutons sont définis dans MyPanel. Cependant, pas ajoutant le masque à la hiérarchie d'affichage me laisse interagir avec le contenu sur MyPanel mais le masque n'est pas dimensionné/positionné correctement. Je suppose que lorsque le masque n'est pas ajouté à la hiérarchie d'affichage, il se trouve dans le coin supérieur gauche du film (je ne peux pas le prouver si).
Comment est-ce que je fais correctement ma taille/position de masque et laisse l'utilisateur interagir avec les boutons dans MyPanel?
Mais masque est une forme et n'a donc pas de propriété mouseEnabled. C'est une raison pour laquelle j'ai utilisé une Forme au lieu d'un Sprite. – Luke
Juste testé avec un sprite au lieu d'une forme (avec la propriété mouseEnabled définie sur false). Ne fonctionne pas non plus. :( – Luke
Peut-être que le problème est dans votre classe MyPanel? Je l'ai testé avec mon code ajouté ci-dessus et il fonctionne comme prévu –