mirror of
https://github.com/photonstorm/phaser
synced 2024-11-16 09:48:18 +00:00
The BitmapMask now registers itself with the Game Object Factory. This means you can do this.add.bitmapMask()
from within a Scene, for easier creation.
This commit is contained in:
parent
739b8c5b94
commit
8bfc0b2eee
1 changed files with 46 additions and 0 deletions
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
var Class = require('../../utils/Class');
|
||||
var GameObjectFactory = require('../../gameobjects/GameObjectFactory');
|
||||
|
||||
/**
|
||||
* @classdesc
|
||||
|
@ -187,4 +188,49 @@ var BitmapMask = new Class({
|
|||
|
||||
});
|
||||
|
||||
/**
|
||||
* A Bitmap Mask combines the alpha (opacity) of a masked pixel with the alpha of another pixel.
|
||||
* Unlike the Geometry Mask, which is a clipping path, a Bitmap Mask behaves like an alpha mask,
|
||||
* not a clipping path. It is only available when using the WebGL Renderer.
|
||||
*
|
||||
* A Bitmap Mask can use any Game Object to determine the alpha of each pixel of the masked Game Object(s).
|
||||
* For any given point of a masked Game Object's texture, the pixel's alpha will be multiplied by the alpha
|
||||
* of the pixel at the same position in the Bitmap Mask's Game Object. The color of the pixel from the
|
||||
* Bitmap Mask doesn't matter.
|
||||
*
|
||||
* For example, if a pure blue pixel with an alpha of 0.95 is masked with a pure red pixel with an
|
||||
* alpha of 0.5, the resulting pixel will be pure blue with an alpha of 0.475. Naturally, this means
|
||||
* that a pixel in the mask with an alpha of 0 will hide the corresponding pixel in all masked Game Objects
|
||||
* A pixel with an alpha of 1 in the masked Game Object will receive the same alpha as the
|
||||
* corresponding pixel in the mask.
|
||||
*
|
||||
* Note: You cannot combine Bitmap Masks and Blend Modes on the same Game Object. You can, however,
|
||||
* combine Geometry Masks and Blend Modes together.
|
||||
*
|
||||
* The Bitmap Mask's location matches the location of its Game Object, not the location of the
|
||||
* masked objects. Moving or transforming the underlying Game Object will change the mask
|
||||
* (and affect the visibility of any masked objects), whereas moving or transforming a masked object
|
||||
* will not affect the mask.
|
||||
*
|
||||
* The Bitmap Mask will not render its Game Object by itself. If the Game Object is not in a
|
||||
* Scene's display list, it will only be used for the mask and its full texture will not be directly
|
||||
* visible. Adding the underlying Game Object to a Scene will not cause any problems - it will
|
||||
* render as a normal Game Object and will also serve as a mask.
|
||||
*
|
||||
* @method Phaser.GameObjects.GameObjectFactory#bitmapMask
|
||||
* @since 3.60.0
|
||||
*
|
||||
* @param {Phaser.GameObjects.GameObject} [maskObject] - The Game Object that will be used as the mask. If `null` it will generate an Image Game Object using the rest of the arguments.
|
||||
* @param {number} [x] - If creating a Game Object, the horizontal position in the world.
|
||||
* @param {number} [y] - If creating a Game Object, the vertical position in the world.
|
||||
* @param {(string|Phaser.Textures.Texture)} [texture] - If creating a Game Object, the key, or instance of the Texture it will use to render with, as stored in the Texture Manager.
|
||||
* @param {(string|number|Phaser.Textures.Frame)} [frame] - If creating a Game Object, an optional frame from the Texture this Game Object is rendering with.
|
||||
*
|
||||
* @return {Phaser.Display.Masks.BitmapMask} The Bitmap Mask that was created.
|
||||
*/
|
||||
GameObjectFactory.register('bitmapMask', function (maskObject, x, y, key, frame)
|
||||
{
|
||||
return new BitmapMask(this.scene, maskObject, x, y, key, frame);
|
||||
});
|
||||
|
||||
module.exports = BitmapMask;
|
||||
|
|
Loading…
Reference in a new issue