mirror of
https://github.com/wassname/phaser.git
synced 2026-07-02 17:00:42 +08:00
BitmapData object added
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
/**
|
||||
* @author Richard Davey <rich@photonstorm.com>
|
||||
* @copyright 2013 Photon Storm Ltd.
|
||||
* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
|
||||
*/
|
||||
|
||||
/**
|
||||
* Creates a new `BitmapData` object.
|
||||
*
|
||||
* @class Phaser.BitmapData
|
||||
* @constructor
|
||||
* @param {Phaser.Game} game - A reference to the currently running game.
|
||||
* @param {string} [key] - A key the BitmapData will use when added to the Phaser.Cache. If none is given a UUID is generated.
|
||||
* @param {number} [width=256] - The width of the BitmapData in pixels.
|
||||
* @param {number} [height=256] - The height of the BitmapData in pixels.
|
||||
*/
|
||||
Phaser.BitmapData = function (game, key, width, height) {
|
||||
|
||||
if (typeof key === 'undefined') { key = 'bitmapData' . game.rnd.uuid(); }
|
||||
if (typeof width === 'undefined') { width = 256; }
|
||||
if (typeof height === 'undefined') { height = 256; }
|
||||
|
||||
/**
|
||||
* @property {Phaser.Game} game - A reference to the currently running game.
|
||||
*/
|
||||
this.game = game;
|
||||
|
||||
/**
|
||||
* @property {string} name - The name of the BitmapData.
|
||||
*/
|
||||
this.name = key;
|
||||
|
||||
/**
|
||||
* @property {number} width - The width of the BitmapData in pixels.
|
||||
*/
|
||||
this.width = width;
|
||||
|
||||
/**
|
||||
* @property {number} height - The height of the BitmapData in pixels.
|
||||
*/
|
||||
this.height = height;
|
||||
|
||||
/**
|
||||
* @property {HTMLCanvasElement} canvas - The canvas to which this BitmapData draws.
|
||||
* @default
|
||||
*/
|
||||
this.canvas = Phaser.Canvas.create(width, height);
|
||||
|
||||
/**
|
||||
* @property {HTMLCanvasContextElement} context - The 2d context of the canvas.
|
||||
* @default
|
||||
*/
|
||||
this.context = this.canvas.getContext('2d');
|
||||
|
||||
/**
|
||||
* @property {PIXI.BaseTexture} baseTexture - The PIXI.BaseTexture.
|
||||
* @default
|
||||
*/
|
||||
this.baseTexture = new PIXI.BaseTexture(this.canvas);
|
||||
|
||||
/**
|
||||
* @property {PIXI.Texture} texture - The PIXI.Texture.
|
||||
* @default
|
||||
*/
|
||||
this.texture = new PIXI.Texture(this.baseTexture);
|
||||
|
||||
/**
|
||||
* @property {Phaser.Frame} textureFrame - The Frame this BitmapData uses for rendering.
|
||||
* @default
|
||||
*/
|
||||
this.textureFrame = new Phaser.Frame(0, 0, 0, width, height, 'bitmapData', game.rnd.uuid());
|
||||
|
||||
/**
|
||||
* @property {number} type - The const type of this object.
|
||||
* @default
|
||||
*/
|
||||
this.type = Phaser.BITMAPDATA;
|
||||
|
||||
}
|
||||
|
||||
Phaser.BitmapData.prototype = {
|
||||
|
||||
clear: function () {
|
||||
|
||||
this.context.clearRect(0, 0, this.width, this.height);
|
||||
|
||||
},
|
||||
|
||||
render: function () {
|
||||
|
||||
// Only needed if running in WebGL, otherwise this array will never get cleared down I don't think!
|
||||
if (this.game.renderType == Phaser.WEBGL)
|
||||
{
|
||||
PIXI.texturesToUpdate.push(this.baseTexture);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -274,6 +274,23 @@ Phaser.GameObjectFactory.prototype = {
|
||||
|
||||
return texture;
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* A BitmapData object which can be manipulated and drawn to like a traditional Canvas object and used to texture Sprites.
|
||||
*
|
||||
* @method Phaser.GameObjectFactory#bitmapData
|
||||
* @param {string} [key] - A key the BitmapData will use when added to the Phaser.Cache. If none is given a UUID is generated.
|
||||
* @param {number} [width=256] - The width of the BitmapData in pixels.
|
||||
* @param {number} [height=256] - The height of the BitmapData in pixels.
|
||||
* @return {Phaser.BitmapData} The newly created BitmapData object.
|
||||
*/
|
||||
bitmapData: function (key, width, height) {
|
||||
|
||||
var bmd = new Phaser.BitmapData(this.game, key, width, height);
|
||||
|
||||
return this.game.cache.addBitmapData(bmd.name, bmd);
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
@@ -15,7 +15,7 @@
|
||||
* @param {Phaser.Game} game - A reference to the currently running game.
|
||||
* @param {number} x - The x coordinate (in world space) to position the Sprite at.
|
||||
* @param {number} y - The y coordinate (in world space) to position the Sprite at.
|
||||
* @param {string|Phaser.RenderTexture|PIXI.Texture} key - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture.
|
||||
* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture.
|
||||
* @param {string|number} frame - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index.
|
||||
*/
|
||||
Phaser.Sprite = function (game, x, y, key, frame) {
|
||||
@@ -89,7 +89,7 @@ Phaser.Sprite = function (game, x, y, key, frame) {
|
||||
this.input = new Phaser.InputHandler(this);
|
||||
|
||||
/**
|
||||
* @property {string|Phaser.RenderTexture|PIXI.Texture} key - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture.
|
||||
* @property {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture, BitmapData or PIXI.Texture.
|
||||
*/
|
||||
this.key = key;
|
||||
|
||||
@@ -104,6 +104,12 @@ Phaser.Sprite = function (game, x, y, key, frame) {
|
||||
|
||||
this.currentFrame = this.game.cache.getTextureFrame(key.name);
|
||||
}
|
||||
else if (key instanceof Phaser.BitmapData)
|
||||
{
|
||||
PIXI.Sprite.call(this, key.texture, key.textureFrame);
|
||||
|
||||
this.currentFrame = key.textureFrame;
|
||||
}
|
||||
else if (key instanceof PIXI.Texture)
|
||||
{
|
||||
PIXI.Sprite.call(this, key);
|
||||
|
||||
Reference in New Issue
Block a user