Add documentation in src/sprites/clone.js

This commit is contained in:
Tim Mickel 2016-07-06 13:57:58 -04:00
parent 460760bd06
commit 798368b6c5

View file

@ -9,6 +9,9 @@ function Clone(spriteBlocks) {
}
util.inherits(Clone, Target);
/**
* Create a clone's drawable with the renderer.
*/
Clone.prototype.initDrawable = function () {
var createPromise = self.renderer.createDrawable();
var instance = this;
@ -17,17 +20,41 @@ Clone.prototype.initDrawable = function () {
});
};
// Clone-level properties
// Clone-level properties.
/**
* Scratch X coordinate. Currently should range from -240 to 240.
* @type {!number}
*/
Clone.prototype.x = 0;
/**
* Scratch Y coordinate. Currently should range from -180 to 180.
* @type {!number}
*/
Clone.prototype.y = 0;
/**
* Scratch direction. Currently should range from -179 to 180.
* @type {!number}
*/
Clone.prototype.direction = 90;
/**
* Whether the clone is currently visible.
* @type {!boolean}
*/
Clone.prototype.visible = true;
/**
* Size of clone as a percent of costume size. Ranges from 5% to 535%.
* @type {!number}
*/
Clone.prototype.size = 100;
/**
* Map of current graphic effect values.
* @type {!Object.<string, number>}
*/
Clone.prototype.effects = {
'color': 0,
'fisheye': 0,
@ -37,7 +64,13 @@ Clone.prototype.effects = {
'brightness': 0,
'ghost': 0
};
// End clone-level properties.
/**
* Set the X and Y coordinates of a clone.
* @param {!number} x New X coordinate of clone, in Scratch coordinates.
* @param {!number} y New Y coordinate of clone, in Scratch coordinates.
*/
Clone.prototype.setXY = function (x, y) {
this.x = x;
this.y = y;
@ -46,7 +79,12 @@ Clone.prototype.setXY = function (x, y) {
});
};
/**
* Set the direction of a clone.
* @param {!number} direction New direction of clone.
*/
Clone.prototype.setDirection = function (direction) {
// Keep direction between -179 and +180.
this.direction = MathUtil.wrapClamp(direction, -179, 180);
self.renderer.updateDrawableProperties(this.drawableID, {
direction: this.direction
@ -67,6 +105,10 @@ Clone.prototype.setSay = function (type, message) {
console.log('Setting say bubble:', type, message);
};
/**
* Set visibility of the clone; i.e., whether it's shown or hidden.
* @param {!boolean} visible True if the sprite should be shown.
*/
Clone.prototype.setVisible = function (visible) {
this.visible = visible;
// @todo: Until visibility is implemented in the renderer, use a ghost.
@ -77,13 +119,23 @@ Clone.prototype.setVisible = function (visible) {
}
};
/**
* Set size of the clone, as a percentage of the costume size.
* @param {!number} size Size of clone, from 5 to 535.
*/
Clone.prototype.setSize = function (size) {
// Keep size between 5% and 535%.
this.size = MathUtil.clamp(size, 5, 535);
self.renderer.updateDrawableProperties(this.drawableID, {
scale: this.size
});
};
/**
* Set a particular graphic effect on this clone.
* @param {!string} effectName Name of effect (see `Clone.prototype.effects`).
* @param {!number} value Numerical magnitude of effect.
*/
Clone.prototype.setEffect = function (effectName, value) {
this.effects[effectName] = value;
var props = {};
@ -91,6 +143,9 @@ Clone.prototype.setEffect = function (effectName, value) {
self.renderer.updateDrawableProperties(this.drawableID, props);
};
/**
* Clear all graphic effects on this clone.
*/
Clone.prototype.clearEffects = function () {
for (var effectName in this.effects) {
this.effects[effectName] = 0;