el problema esta en la funcion Animation. hay varias razones para que suceda dicho error pero en este caso es porque estas intentando asignar un valor directamente al objeto this. a mi entender, tu quieres inicializar this con un objeto que ya tiene las propiedades declaradas. no estoy muy claro porque nunca lo he realizado de esa manera, pero creo que no puedes hacerlo asi porque this es un objeto reservado para ese constructor.
tienes dos opciones: al estilo vieja escuela, o creas una funcion que inicialice this pasandole un objeto. quizas la segunda opcion parece estupida, pero veremos. la vieja escuela es la forma comun y corriente.
Código:
function(){
this.nombre = valor;
// se repite tantas veces sea necesario inicializar el objeto;
...
}
la otra opcion, es una funcion que itera por las propiedades de un objeto y se van asignando al objeto this. quizas algo como sigue:
Código:
Object.prototype.initialize = function(init){
for(var prop in init)if(init.hasOwnProperty(prop)) this[prop] = init[prop];
}
// se usa de la siguiente manera;
Animation = function(sprite, speed){
this.initialize({spr: sprite, spd: speed, frame:[]});
}