mirror of
https://github.com/photonstorm/phaser
synced 2024-12-23 19:43:28 +00:00
161 lines
4.8 KiB
JavaScript
161 lines
4.8 KiB
JavaScript
|
/// <reference path="../_definitions.ts" />
|
||
|
/**
|
||
|
* FrameData
|
||
|
*
|
||
|
* FrameData is a container for Frame objects, which are the internal representation of animation data in Phaser.
|
||
|
*
|
||
|
* @package Phaser.FrameData
|
||
|
* @author Richard Davey <rich@photonstorm.com>
|
||
|
* @copyright 2013 Photon Storm Ltd.
|
||
|
* @license https://github.com/photonstorm/phaser/blob/master/license.txt MIT License
|
||
|
*/
|
||
|
var Phaser;
|
||
|
(function (Phaser) {
|
||
|
var FrameData = (function () {
|
||
|
/**
|
||
|
* FrameData constructor
|
||
|
*/
|
||
|
function FrameData() {
|
||
|
this._frames = [];
|
||
|
this._frameNames = [];
|
||
|
}
|
||
|
Object.defineProperty(FrameData.prototype, "total", {
|
||
|
get: function () {
|
||
|
return this._frames.length;
|
||
|
},
|
||
|
enumerable: true,
|
||
|
configurable: true
|
||
|
});
|
||
|
|
||
|
/**
|
||
|
* Add a new frame.
|
||
|
* @param frame {Frame} The frame you want to add.
|
||
|
* @return {Frame} The frame you just added.
|
||
|
*/
|
||
|
FrameData.prototype.addFrame = function (frame) {
|
||
|
frame.index = this._frames.length;
|
||
|
|
||
|
this._frames.push(frame);
|
||
|
|
||
|
if (frame.name !== '') {
|
||
|
this._frameNames[frame.name] = frame.index;
|
||
|
}
|
||
|
|
||
|
return frame;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Get a frame by its index.
|
||
|
* @param index {number} Index of the frame you want to get.
|
||
|
* @return {Frame} The frame you want.
|
||
|
*/
|
||
|
FrameData.prototype.getFrame = function (index) {
|
||
|
if (this._frames[index]) {
|
||
|
return this._frames[index];
|
||
|
}
|
||
|
|
||
|
return null;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Get a frame by its name.
|
||
|
* @param name {string} Name of the frame you want to get.
|
||
|
* @return {Frame} The frame you want.
|
||
|
*/
|
||
|
FrameData.prototype.getFrameByName = function (name) {
|
||
|
if (this._frameNames[name] !== '') {
|
||
|
return this._frames[this._frameNames[name]];
|
||
|
}
|
||
|
|
||
|
return null;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Check whether there's a frame with given name.
|
||
|
* @param name {string} Name of the frame you want to check.
|
||
|
* @return {boolean} True if frame with given name found, otherwise return false.
|
||
|
*/
|
||
|
FrameData.prototype.checkFrameName = function (name) {
|
||
|
if (this._frameNames[name] == null) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
return true;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Get ranges of frames in an array.
|
||
|
* @param start {number} Start index of frames you want.
|
||
|
* @param end {number} End index of frames you want.
|
||
|
* @param [output] {Frame[]} result will be added into this array.
|
||
|
* @return {Frame[]} Ranges of specific frames in an array.
|
||
|
*/
|
||
|
FrameData.prototype.getFrameRange = function (start, end, output) {
|
||
|
if (typeof output === "undefined") { output = []; }
|
||
|
for (var i = start; i <= end; i++) {
|
||
|
output.push(this._frames[i]);
|
||
|
}
|
||
|
|
||
|
return output;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Get all indexes of frames by giving their name.
|
||
|
* @param [output] {number[]} result will be added into this array.
|
||
|
* @return {number[]} Indexes of specific frames in an array.
|
||
|
*/
|
||
|
FrameData.prototype.getFrameIndexes = function (output) {
|
||
|
if (typeof output === "undefined") { output = []; }
|
||
|
output.length = 0;
|
||
|
|
||
|
for (var i = 0; i < this._frames.length; i++) {
|
||
|
output.push(i);
|
||
|
}
|
||
|
|
||
|
return output;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Get the frame indexes by giving the frame names.
|
||
|
* @param [output] {number[]} result will be added into this array.
|
||
|
* @return {number[]} Names of specific frames in an array.
|
||
|
*/
|
||
|
FrameData.prototype.getFrameIndexesByName = function (input) {
|
||
|
var output = [];
|
||
|
|
||
|
for (var i = 0; i < input.length; i++) {
|
||
|
if (this.getFrameByName(input[i])) {
|
||
|
output.push(this.getFrameByName(input[i]).index);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return output;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Get all frames in this frame data.
|
||
|
* @return {Frame[]} All the frames in an array.
|
||
|
*/
|
||
|
FrameData.prototype.getAllFrames = function () {
|
||
|
return this._frames;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Get All frames with specific ranges.
|
||
|
* @param range {number[]} Ranges in an array.
|
||
|
* @return {Frame[]} All frames in an array.
|
||
|
*/
|
||
|
FrameData.prototype.getFrames = function (range) {
|
||
|
var output = [];
|
||
|
|
||
|
for (var i = 0; i < range.length; i++) {
|
||
|
output.push(this._frames[i]);
|
||
|
}
|
||
|
|
||
|
return output;
|
||
|
};
|
||
|
return FrameData;
|
||
|
})();
|
||
|
Phaser.FrameData = FrameData;
|
||
|
})(Phaser || (Phaser = {}));
|