mirror of
https://github.com/photonstorm/phaser
synced 2024-11-23 13:13:43 +00:00
Actions.PropertyValueInc is a new action that will increment any property of an array of objects by the given amount, using an optional step value, index and iteration direction. Most Actions have been updated to use this internally.
This commit is contained in:
parent
5be0932fae
commit
263086fd6a
1 changed files with 59 additions and 0 deletions
59
src/actions/PropertyValueInc.js
Normal file
59
src/actions/PropertyValueInc.js
Normal file
|
@ -0,0 +1,59 @@
|
|||
/**
|
||||
* @author Richard Davey <rich@photonstorm.com>
|
||||
* @copyright 2018 Photon Storm Ltd.
|
||||
* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
|
||||
*/
|
||||
|
||||
/**
|
||||
* Takes an array of Game Objects, or any objects that have a public property as defined in `key`,
|
||||
* and then adds the given value to it.
|
||||
*
|
||||
* The optional `step` property is applied incrementally, multiplied by each item in the array.
|
||||
*
|
||||
* To use this with a Group: `PropertyValueInc(group.getChildren(), key, value, step)`
|
||||
*
|
||||
* @function Phaser.Actions.PropertyValueInc
|
||||
* @since 3.3.0
|
||||
*
|
||||
* @param {array|Phaser.GameObjects.GameObject[]} items - The array of items to be updated by this action.
|
||||
* @param {string} key - The property to be updated.
|
||||
* @param {number} value - The amount to be added to the property.
|
||||
* @param {number} [step=0] - This is added to the `value` amount, multiplied by the iteration counter.
|
||||
* @param {integer} [index=0] - An optional offset to start searching from within the items array.
|
||||
* @param {integer} [direction=1] - The direction to iterate through the array. 1 is from beginning to end, -1 from end to beginning.
|
||||
*
|
||||
* @return {array} The array of objects that were passed to this Action.
|
||||
*/
|
||||
var PropertyValueInc = function (items, key, value, step, index, direction)
|
||||
{
|
||||
if (step === undefined) { step = 0; }
|
||||
if (index === undefined) { index = 0; }
|
||||
if (direction === undefined) { direction = 1; }
|
||||
|
||||
var i;
|
||||
var t = 0;
|
||||
var end = items.length;
|
||||
|
||||
if (direction === 1)
|
||||
{
|
||||
// Start to End
|
||||
for (i = index; i < end; i++)
|
||||
{
|
||||
items[i][key] += value + (t * step);
|
||||
t++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// End to Start
|
||||
for (i = index; i >= 0; i--)
|
||||
{
|
||||
items[i][key] += value + (t * step);
|
||||
t++;
|
||||
}
|
||||
}
|
||||
|
||||
return items;
|
||||
};
|
||||
|
||||
module.exports = PropertyValueInc;
|
Loading…
Reference in a new issue