Para indicar que un objeto de visualización será la máscara de otro objeto de visualización, es preciso definir el objeto de máscara como la propiedad
mask
del objeto de visualización que se va a enmascarar:
// Make the object maskSprite be a mask for the object mySprite.
mySprite.mask = maskSprite;
El objeto de visualización con máscara aparece bajo todas las zonas opacas (no transparentes) del objeto de visualización que actúa como máscara. Por ejemplo, el código siguiente crea una instancia de Shape que contiene un cuadrado rojo de 100 por 100 píxeles y una instancia de Sprite que contiene un círculo azul con un radio de 25 píxeles. Cuando se hace clic en un círculo, se define como la máscara del cuadrado, de forma que la única parte del cuadrado que aparece visible es la que queda cubierta por la parte sólida del círculo. Dicho de otro modo, solo se ve un círculo rojo.
// This code assumes it's being run within a display object container
// such as a MovieClip or Sprite instance.
import flash.display.Shape;
// Draw a square and add it to the display list.
var square:Shape = new Shape();
square.graphics.lineStyle(1, 0x000000);
square.graphics.beginFill(0xff0000);
square.graphics.drawRect(0, 0, 100, 100);
square.graphics.endFill();
this.addChild(square);
// Draw a circle and add it to the display list.
var circle:Sprite = new Sprite();
circle.graphics.lineStyle(1, 0x000000);
circle.graphics.beginFill(0x0000ff);
circle.graphics.drawCircle(25, 25, 25);
circle.graphics.endFill();
this.addChild(circle);
function maskSquare(event:MouseEvent):void
{
square.mask = circle;
circle.removeEventListener(MouseEvent.CLICK, maskSquare);
}
circle.addEventListener(MouseEvent.CLICK, maskSquare);
El objeto de visualización que actúa como máscara puede arrastrarse, animarse, cambiar de tamaño automáticamente y usar formas independientes en una sola máscara. No es necesario añadir el objeto de visualización de máscara a la lista de visualización. Sin embargo, si se desea ajustar la escala del objeto de máscara cuando se ajusta la escala del escenario, o permitir la interacción del usuario con la máscara (por ejemplo, el arrastre o cambio de tamaño controlado por el usuario), el objeto de máscara debe añadirse a la lista de visualización. El índice z real (de delante a atrás) de los objetos de visualización no es relevante, siempre y cuando el objeto de máscara se añada a la lista de visualización. (El objeto de máscara solo aparecerá en la pantalla como una máscara.) Si el objeto de máscara es una instancia de MovieClip con varios fotogramas, reproduce todos ellos en su línea de tiempo, tal y como haría si no actuara como una máscara. Para eliminar una máscara, debe establecerse la propiedad
mask
en
null
:
// remove the mask from mySprite
mySprite.mask = null;
No puede utilizar una máscara para enmascarar otra máscara ni definir la propiedad
alpha
de un objeto de visualización de máscara. En un objeto de visualización que se usa como máscara, solo se pueden utilizar los rellenos; los trazos se pasan por alto.
AIR 2
Si un objeto de visualización enmascarado se almacena en caché estableciendo las propiedades
cacheAsBitmap
y
cacheAsBitmapMatrix
, la máscara debe ser un objeto secundario del objeto de visualización enmascarado. Del mismo modo, si el objeto de visualización enmascarado es un descendiente de un contenedor del objeto de visualización que está almacenado en caché, tanto la máscara como el objeto de visualización deben ser descendentes de dicho contenedor. Si el objeto enmascarado es un descendiente de varios contenedores del objeto de visualización almacenado en caché, la máscara debe ser un descendiente del contenedor almacenado en caché más cercano al objeto enmascarado en la lista de visualización.