~~NOTOC~~
====== Texture Mask ======
---- dataentry extension ----
author_mail : daniel@gamua.com Daniel Sperl
description : A mesh style that discards alpha values below a certain threshold; useful for masks.
compatible : v2.0
tags : mask, stencil, alpha
homepage_url : https://gist.github.com/PrimaryFeather/d13b8d14d329a364c7cb
----
===== Overview =====
Starling 1.7 added support for stencil masks via a new property on display objects ("mask"). One way to create such a mask is to use the new "Canvas" class for drawing a vector shape.
However, for complex shapes, it's easier to simply use the pixels of a certain texture as a mask. That's what this class is for.
{{ :extensions:texture-mask.mp4?296x296 |}}
==== Starling 2 ====
The version for Starling 2 is implemented as a mesh style. This allows you to assign it to any mesh object (like Quad, Image, or even MovieClip). Any pixels with an alpha value below a certain threshold will be discarded. You can display such an object anywhere in the display tree, but it is especially useful as a stencil mask.
// get a sprite with some content
var sprite:Sprite = createMySprite();
addChild(sprite);
// create the image that will act as a mask, and assign the "TextureMaskStyle"
var mask:Image = new Image(assets.getTexture("shape"));
var style:TextureMaskStyle = new TextureMaskStyle();
mask.style = style;
sprite.mask = mask;
// change threshold to fine-tune the result
style.threshold = 0.3;
==== Starling 1.7 ====
To use this extension with Starling 1.7, use [[https://gist.github.com/PrimaryFeather/4d5b194783f3df296093|the TextureMask class]] instead.
A "TextureMask" is actually a conventional display object, very similar to the "Image" class. The main difference to an image is that any pixels with an alpha value below a certain threshold will be discarded.
// get a sprite with some content
var sprite:Sprite = createMySprite();
addChild(sprite);
// create a "TextureMask" and assign it to the "mask" property
var textureMask:TextureMask = new TextureMask(assets.getTexture("shape"));
sprite.mask = textureMask;
// change threshold to fine-tune the result
textureMask.threshold = 0.3;
===== Changelog =====
* //2015/05/07//: First public version
* //2016/02/18//: Created Starling 2 version
===== User Comments =====
//Feel free to edit this part of the page if you want to add information that's lacking in the above description.\\
Questions are better asked in the [[http://forum.starling-framework.org|forum]], though.//