UNPKG

lettuce

Version:

Lettuce JS, Mini Mobile Framework for Romantic with DSL.

211 lines (193 loc) 6.48 kB
/* * MelonJS Game Engine * Copyright (C) 2011 - 2014 Olivier Biot, Jason Oster, Aaron McLeod * http://www.melonjs.org * */ (function () { /** * A base class for renderable objects. * @class * @extends me.Rect * @memberOf me * @constructor * @param {Number} x position of the renderable object * @param {Number} y position of the renderable object * @param {Number} width object width * @param {Number} height object height */ me.Renderable = me.Rect.extend( /** @scope me.Renderable.prototype */ { /** * @ignore */ init : function (x, y, width, height) { /** * to identify the object as a renderable object * @ignore */ this.isRenderable = true; /** * (G)ame (U)nique (Id)entifier" <br> * a GUID will be allocated for any renderable object added <br> * to an object container (including the `me.game.world` container) * @public * @type String * @name GUID * @memberOf me.Renderable */ this.GUID = undefined; /** * Whether the renderable object is visible and within the viewport<br> * default value : false * @public * @readonly * @type Boolean * @name inViewport * @memberOf me.Renderable */ this.inViewport = false; /** * Whether the renderable object will always update, even when outside of the viewport<br> * default value : false * @public * @type Boolean * @name alwaysUpdate * @memberOf me.Renderable */ this.alwaysUpdate = false; /** * Whether to update this object when the game is paused. * default value : false * @public * @type Boolean * @name updateWhenPaused * @memberOf me.Renderable */ this.updateWhenPaused = false; /** * make the renderable object persistent over level changes<br> * default value : false * @public * @type Boolean * @name isPersistent * @memberOf me.Renderable */ this.isPersistent = false; /** * Define if a renderable follows screen coordinates (floating)<br> * or the world coordinates (not floating)<br> * default value : false * @public * @type Boolean * @name floating * @memberOf me.Renderable */ this.floating = false; /** * Z-order for object sorting<br> * default value : NaN; will be automatically set by me.Container.addChild() * @private * @type Number * @name z * @memberOf me.Renderable */ this.z = NaN; /** * Define the object anchoring point<br> * This is used when positioning, or scaling the object<br> * The anchor point is a value between 0.0 and 1.0 (1.0 being the maximum size of the object) <br> * (0, 0) means the top-left corner, <br> * (1, 1) means the bottom-right corner, <br> * default anchoring point is the center (0.5, 0.5) of the object. * @public * @type me.Vector2d * @name anchorPoint * @memberOf me.Renderable */ this.anchorPoint = new me.Vector2d(); /** * Define the renderable opacity<br> * Set to zero if you do not wish an object to be drawn * @see me.Renderable#setOpacity * @see me.Renderable#getOpacity * @public * @type Number * @name me.Renderable#alpha */ this.alpha = 1.0; // call the super constructor this._super(me.Rect, "init", [x, y, width, height]); // set the default anchor point (middle of the renderable) this.anchorPoint.set(0.5, 0.5); // ensure it's fully opaque by default this.setOpacity(1.0); }, /** * get the renderable alpha channel value<br> * @name getOpacity * @memberOf me.Renderable * @function * @return {Number} current opacity value between 0 and 1 */ getOpacity : function () { return this.alpha; }, /** * set the renderable alpha channel value<br> * @name setOpacity * @memberOf me.Renderable * @function * @param {Number} alpha opacity value between 0 and 1 */ setOpacity : function (alpha) { if (typeof (alpha) === "number") { this.alpha = alpha.clamp(0.0, 1.0); // Set to 1 if alpha is NaN if (this.alpha !== this.alpha) { this.alpha = 1.0; } } }, /** * update function * called by the game manager on each game loop * @name update * @memberOf me.Renderable * @function * @protected * @param {Number} dt time since the last update in milliseconds. * @return false **/ update : function () { return false; }, /** * object draw * called by the game manager on each game loop * @name draw * @memberOf me.Renderable * @function * @protected * @param {Renderer} a renderer object: me.CanvasRenderer or me.WebGLRenderer **/ draw : function (/*renderer*/) { // empty one ! } }); /** * Base class for Renderable exception handling. * @name Error * @class * @memberOf me.Renderable * @constructor * @param {String} msg Error message. */ me.Renderable.Error = me.Error.extend({ init : function (msg) { this._super(me.Error, "init", [ msg ]); this.name = "me.Renderable.Error"; } }); })();