別の表示オブジェクトのマスクとなる表示オブジェクトを指定するには、マスクされる表示オブジェクトの
mask
プロパティとしてマスクオブジェクトを設定します。
// Make the object maskSprite be a mask for the object mySprite.
mySprite.mask = maskSprite;
マスクされる表示オブジェクトは、マスクとして機能する表示オブジェクトのすべての不透明な(透明でない)領域で表示されます。 例えば、次のコードでは、赤色で 100 × 100 ピクセルの四角形を含む Shape インスタンスと、青色で半径 25 ピクセルの円を含む Sprite インスタンスを作成します。 円をクリックすると、円は四角形のマスクとして設定されます。結果的に、四角形の表示される部分は、円の単体部分によって覆い隠された部分のみとなります。 すなわち、赤い円しか表示されません。
// 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);
マスクとして機能する表示オブジェクトは、ドラッグ、アニメーション化、動的なサイズ変更が可能なほか、単一のマスク内で別個のシェイプを使用できます。 マスク表示オブジェクトは、必ずしも表示リストに追加する必要があるわけではありません。ただし、ステージが拡大/縮小されるときにマスクオブジェクトを拡大/縮小したい場合、または、マスクを使ったユーザー操作(ユーザー制御のドラッグやサイズ変更など)を可能にしたい場合は、マスクオブジェクトを表示リストに追加する必要があります。 マスクオブジェクトを表示リストに追加する間、表示オブジェクトの実際の z 順序(重ね順)は関係ありません(マスクオブジェクトは、マスクとして以外に画面上に表示されることはありません)。 マスクオブジェクトが、複数のフレームのある MovieClip インスタンスであった場合、このオブジェクトがマスクとして機能しなかった場合と同様に、すべてのフレームがそのタイムライン内で再生されます。
mask
プロパティを次のように
null
に設定すると、マスクを削除できます。
// remove the mask from mySprite
mySprite.mask = null;
別のマスクをマスクするためにマスクを使用することはできません。 マスク表示オブジェクトの
alpha
プロパティを設定することはできません。マスクとして使用される表示オブジェクトでは、塗りのみを使用できます(線は無視されます)。
AIR 2
マスクされる表示オブジェクトが
cacheAsBitmap
プロパティおよび
cacheAsBitmapMatrix
プロパティの設定によってキャッシュされる場合は、マスクはマスクされる表示オブジェクトの子である必要があります。同様に、マスクされる表示オブジェクトが、キャッシュされる表示オブジェクトコンテナの子孫の場合は、マスクと表示オブジェクトの両方がそのコンテナの子孫である必要があります。マスクされるオブジェクトが複数のキャッシュされる表示オブジェクトコンテナの子孫の場合は、マスクは、表示リスト内のマスクされるオブジェクトに最も近い、キャッシュされるコンテナの子孫である必要があります。