var adc = adc || {};
adc.particle = {
x: 0,
y: 0,
vx: 0,
vy: 0,
gravity: 0.0,
bounce: -0.9,
friction: 1.0,
bounds: null,
color: "#000000",
context: null,
extend: function(props) {
var prop, obj;
obj = Object.create(this);
for(prop in props) {
if(props.hasOwnProperty(prop)) {
obj[prop] = props[prop];
}
}
return obj;
},
init: function() {
this.x = Math.random() * this.bounds.x2;
this.y = Math.random() * this.bounds.y2;
this.vx = Math.random() * 10 - 5;
this.vy = Math.random() * 10 - 5;
},
update: function() {
this.vy += this.gravity;
this.x += this.vx;
this.y += this.vy;
this.vx *= this.friction;
this.vy *= this.friction;
if(this.x < this.bounds.x1) {
this.x = this.bounds.x1;
this.vx *= this.bounce;
}
else if(this.x > this.bounds.x2) {
this.x = this.bounds.x2;
this.vx *= this.bounce;
}
if(this.y < this.bounds.y1) {
this.y = this.bounds.y1;
this.vy *= this.bounce;
}
else if(this.y > this.bounds.y2) {
this.y = this.bounds.y2;
this.vy *= this.bounce;
}
},
render: function() {
if(this.context === null) {
throw new Error("context needs to be set on particle");
}
this.context.fillStyle = this.color;
this.context.fillRect(this.x - 1.5, this.y - 1.5, 3, 3);
}
};
|