phaser/src/gameobjects/components/Texture.js

138 lines
3.9 KiB
JavaScript
Raw Normal View History

2018-02-12 16:01:20 +00:00
/**
* @author Richard Davey <rich@photonstorm.com>
2022-02-28 14:29:51 +00:00
* @copyright 2022 Photon Storm Ltd.
2019-05-10 15:15:04 +00:00
* @license {@link https://opensource.org/licenses/MIT|MIT License}
2018-02-12 16:01:20 +00:00
*/
var Frame = require('../../textures/Frame');
// bitmask flag for GameObject.renderMask
var _FLAG = 8; // 1000
2018-02-01 01:09:34 +00:00
/**
* Provides methods used for getting and setting the texture of a Game Object.
2018-03-20 14:56:31 +00:00
*
2019-02-12 12:48:41 +00:00
* @namespace Phaser.GameObjects.Components.Texture
2018-02-01 01:09:34 +00:00
* @since 3.0.0
*/
var Texture = {
2018-02-01 01:09:34 +00:00
/**
* The Texture this Game Object is using to render with.
2018-03-20 14:56:31 +00:00
*
2018-02-01 01:09:34 +00:00
* @name Phaser.GameObjects.Components.Texture#texture
2018-04-23 22:39:24 +00:00
* @type {Phaser.Textures.Texture|Phaser.Textures.CanvasTexture}
2018-02-01 01:09:34 +00:00
* @since 3.0.0
*/
texture: null,
2018-02-01 01:09:34 +00:00
/**
* The Texture Frame this Game Object is using to render with.
2018-03-20 14:56:31 +00:00
*
2018-02-01 01:09:34 +00:00
* @name Phaser.GameObjects.Components.Texture#frame
* @type {Phaser.Textures.Frame}
* @since 3.0.0
*/
frame: null,
2018-07-03 15:48:01 +00:00
/**
2018-07-05 12:06:28 +00:00
* Internal flag. Not to be set by this Game Object.
2018-07-03 15:48:01 +00:00
*
* @name Phaser.GameObjects.Components.Texture#isCropped
* @type {boolean}
* @private
* @since 3.11.0
*/
2018-07-05 12:06:28 +00:00
isCropped: false,
2018-07-03 15:48:01 +00:00
2018-02-01 01:09:34 +00:00
/**
* Sets the texture and frame this Game Object will use to render with.
*
* Textures are referenced by their string-based keys, as stored in the Texture Manager.
2018-03-20 14:56:31 +00:00
*
2018-02-01 01:36:52 +00:00
* @method Phaser.GameObjects.Components.Texture#setTexture
2018-02-01 01:09:34 +00:00
* @since 3.0.0
*
* @param {(string|Phaser.Textures.Texture)} key - The key of the texture to be used, as stored in the Texture Manager, or a Texture instance.
2020-11-23 10:32:00 +00:00
* @param {(string|number)} [frame] - The name or index of the frame within the Texture.
2018-03-20 14:56:31 +00:00
*
2018-05-22 08:08:44 +00:00
* @return {this} This Game Object instance.
2018-02-01 01:09:34 +00:00
*/
setTexture: function (key, frame)
{
this.texture = this.scene.sys.textures.get(key);
return this.setFrame(frame);
},
2018-02-01 01:09:34 +00:00
/**
* Sets the frame this Game Object will use to render with.
*
* If you pass a string or index then the Frame has to belong to the current Texture being used
* by this Game Object.
2018-02-01 01:09:34 +00:00
*
* If you pass a Frame instance, then the Texture being used by this Game Object will also be updated.
*
* Calling `setFrame` will modify the `width` and `height` properties of your Game Object.
*
* It will also change the `origin` if the Frame has a custom pivot point, as exported from packages like Texture Packer.
2018-03-20 14:56:31 +00:00
*
2018-02-01 01:36:52 +00:00
* @method Phaser.GameObjects.Components.Texture#setFrame
2018-02-01 01:09:34 +00:00
* @since 3.0.0
*
* @param {(string|number|Phaser.Textures.Frame)} frame - The name or index of the frame within the Texture, or a Frame instance.
* @param {boolean} [updateSize=true] - Should this call adjust the size of the Game Object?
* @param {boolean} [updateOrigin=true] - Should this call adjust the origin of the Game Object?
2018-03-20 14:56:31 +00:00
*
2018-05-22 04:46:26 +00:00
* @return {this} This Game Object instance.
2018-02-01 01:09:34 +00:00
*/
setFrame: function (frame, updateSize, updateOrigin)
{
if (updateSize === undefined) { updateSize = true; }
if (updateOrigin === undefined) { updateOrigin = true; }
if (frame instanceof Frame)
{
this.texture = this.scene.sys.textures.get(frame.texture.key);
this.frame = frame;
}
else
{
this.frame = this.texture.get(frame);
}
if (!this.frame.cutWidth || !this.frame.cutHeight)
{
this.renderFlags &= ~_FLAG;
}
else
{
this.renderFlags |= _FLAG;
}
if (this._sizeComponent && updateSize)
{
this.setSizeToFrame();
}
if (this._originComponent && updateOrigin)
{
if (this.frame.customPivot)
{
this.setOrigin(this.frame.pivotX, this.frame.pivotY);
}
else
{
this.updateDisplayOrigin();
}
}
return this;
}
};
module.exports = Texture;