Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera,
Seguinte, criei uma classe chamada Spritesheet que realiza todas as operações de desenho e animação de um objeto no canvas. Segue um modelo:
function Spritesheet(imagePath, sourceX, sourceY, sourceWidth, sourceHeight, xPos, yPos){
}
Spritesheet.prototype.draw = function(ctx){
}
Removi o conteúdo da classe para facilitar a compreensão.
A classe funciona perfeitamente. Só que agora eu estou criando uma classe chamada Monster que deverá estender Spritesheet. Pelo o que eu andei lendo esta é a forma de você estender uma classe:
// define the Person Class
function Person() {}
Person.prototype.walk = function(){
alert ('I am walking!');
};
Person.prototype.sayHello = function(){
alert ('hello');
};
// define the Student class
function Student() {
// Call the parent constructor
Person.call(this);
}
// inherit Person
Student.prototype = new Person();
// correct the constructor pointer because it points to Person
Student.prototype.constructor = Student;
O problema é que o método da minha classe Spritesheet recebe 7 parâmetros. já tentei estender das seguintes formas:
function Monster(imagePath, sourceX, sourceY, sourceWidth, sourceHeight, xPos, yPos){
Spritesheet.call(this);
}
Monster.prototype = new Spritesheet(imagePath, sourceX, sourceY, sourceWidth, sourceHeight, xPos, yPos);
Monster.prototype.constructor = Monster;
function Monster(imagePath, sourceX, sourceY, sourceWidth, sourceHeight, xPos, yPos){
Spritesheet.call(imagePath, sourceX, sourceY, sourceWidth, sourceHeight, xPos, yPos);
}
Monster.prototype = new Spritesheet();
Monster.prototype.constructor = Monster;
E de outras formas parecidas com as mostradas acima. Normalmente o erro retornado é que as variáveis não existem ( faz sentido, mas eu não quero criar variáveis globais só para resolver isso) ou Failed to load resource (imagino que seja porque o path da imagem não é passado para Spritesheet).
Alguém tem alguma sugestão?
Desde já agradeço a ajuda,
Até mais,
Carregando comentários...