@smoud/tiny
Version:
Fast and tiny JavaScript library for HTML5 game and playable ads creation.
102 lines (87 loc) • 2.42 kB
JavaScript
import { Rectangle } from './Rectangle';
import { SHAPES } from '../../constants';
/**
* @author Chad Engler <chad@pantherdev.com>
*/
/**
* The Circle object can be used to specify a hit area for displayObjects
*
* @class Circle
* @constructor
* @param x {Number} The X coordinate of the center of this circle
* @param y {Number} The Y coordinate of the center of this circle
* @param radius {Number} The radius of the circle
*/
var Circle = function (x, y, radius) {
/**
* @property x
* @type Number
* @default 0
*/
this.x = x || 0;
/**
* @property y
* @type Number
* @default 0
*/
this.y = y || 0;
/**
* @property radius
* @type Number
* @default 0
*/
this.radius = radius || 0;
/**
* The type of the object, should be one of the Graphics type consts, PIXI.Graphics.CIRC in this case
* @property type
* @type Number
* @default 0
*/
this.type = SHAPES.CIRC;
};
Circle.prototype = {
/**
* Creates a clone of this Circle instance
*
* @method clone
* @return {Circle} a copy of the Circle
*/
// Circle.prototype.clone = function()
// {
// return new Circle(this.x, this.y, this.radius);
// };
/**
* Checks whether the x and y coordinates given are contained within this circle
*
* @method contains
* @param x {Number} The X coordinate of the point to test
* @param y {Number} The Y coordinate of the point to test
* @return {Boolean} Whether the x/y coordinates are within this Circle
*/
contains: function (x, y) {
if (this.radius <= 0) return false;
var dx = this.x - x,
dy = this.y - y,
r2 = this.radius * this.radius;
dx *= dx;
dy *= dy;
return dx + dy <= r2;
},
/**
* Returns the framing rectangle of the circle as a PIXI.Rectangle object
*
* @method getBounds
* @return {Rectangle} the framing rectangle
*/
getBounds: function () {
return new PIXI.Rectangle(
this.x - this.radius,
this.y - this.radius,
this.radius * 2,
this.radius * 2
);
}
};
// constructor
Circle.prototype.constructor = Circle;
export { Circle };