För att ange att ett visningsobjekt ska vara mask för ett annat visningsobjekt anger du maskobjektet som
mask
-egenskapen för visningsobjektet som ska maskeras:
// Make the object maskSprite be a mask for the object mySprite.
mySprite.mask = maskSprite;
Det maskerade visningsobjektet visas under alla ogenomskinliga områden av visningsobjektet som fungerar som masken. Med följande kod skapas en Shape-instans med en röd fyrkant som är 100 x 100 pixlar och en Sprite-instans med en blå cirkel som har en radie på 25 pixlar. När cirkeln klickas anges den som masken för fyrkanten, så att den enda delen av fyrkanten som visas är den del som täcks av den heltäckande delen av cirkeln. M.a.o. visas endast en röd cirkel.
// 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);
Visningsobjektet som fungerar som en mask kan vara dragbart, animerat, dynamiskt storleksändrat och kan använda separata former inom en enstaka mask. Maskens visningsobjekt behöver inte läggas till i visningslistan. Om du däremot vill att maskobjektet skaländras när Stage skaländras eller om du vill aktivera användarinteraktion med masken (till exempel användarkontrollerad dragning och storleksändring) så måste maskobjektet läggas till i visningslistan. Det faktiska z-indexet (överst till underst-ordning) för visningsobjektet spelar ingen roll, bara maskobjektet finns med i visningslistan. (Maskobjektet visas inte på bildskärmen annat än som en mask.) Om maskobjektet är en MovieClip-instans med flera bildrutor spelas alla bildrutor upp i tidslinjen, på samma sätt som om det inte skulle vara en mask. Du kan ta bort en mask genom att ange egenskapen
mask
med
null
:
// remove the mask from mySprite
mySprite.mask = null;
Du kan inte använda en mask för att maskera en annan mask. Du kan inte välja egenskapen
alpha
för ett maskerat visningsobjekt. Endast fyllningar används i visningsobjekt som används som en mask, linjer ignoreras.
AIR 2
Om ett maskerat visningsobjekt cachelagras genom inställning av egenskaperna
cacheAsBitmap
och
cacheAsBitmapMatrix
måste masken vara underordnad det maskerade visningsobjektet. Om det maskerade visningsobjektet är underordnat en visningsobjektsbehållare som är cachelagrad måste på samma sätt både masken och visningsobjektet vara underordnade den behållaren. Om det maskerade objektet är underordnat fler än en cachelagrad visningsobjektsbehållare måste masken vara underordnad den cachelagrade behållare som är närmast det maskerade objektet i visningslistan.