我的播放器不画画。任何帮助,将不胜感激!我想做一个播放器对象,即实体类。基本上,我的播放器不会画画,我想保留这个实体类的想法。我可以将它用于游戏中我想要移动、有重力等的任何东西。
const FPS = 60;
var playerSprite = new Image();
playerSprite.src = 'http://placehold.it/50x75';
var canvas = null;
var context = null;
var keys = [];
window.onload = init;
setInterval (function() {
update();
draw();
},
1000/FPS
);
function init(){
canvas = document.getElementById('canvas');
context = canvas.getContext('2d');
setInterval(draw, 1000 / FPS);
}
function update(){
player.update();
}
function draw(){
context.clearRect(0,0,canvas.width,canvas.height);
player.draw(player.xpos, player.ypos);
}
function Entity(xpos,ypos,xd,yd,speed,yvel,gravity,width,height,imagesrc,controls){
this.xpos = xpos;
this.ypos = ypos;
this.speed = speed;
this.yvel = yvel;
this.gravity = gravity;
this.width = width;
this.height = height;
this.imagesrc = imagesrc;
this.controls = controls;
}
Entity.prototype.draw = function(x,y){
context.drawImage(this.imagesrc, x, y);
}
Entity.prototype.update = function(){
this.xpos += this.xd;
this.ypos += this.yd;
// yVelocity
if(this.ypos >= canvas.height - this.height){
this.yvel = 0;
}else{
this.yvel += this.gravity;
this.ypos += this.yvel;
}
// end of yVelocity
// walls
if(this.xpos >= canvas.width - this.width){
this.xpos = canvas.width - this.width;
}else if(this.xpos <= canvas.width - canvas.width){
this.xpos = canvas.width - canvas.width;
}
// end of walls
// player controls
if(this.controls){
if (keys[39]) {
this.moveRight();
}else if (keys[37]){
this.moveLeft();
}else{
this.stopMove();
}
}
Entity.prototype.moveRight = function(speed){
this.xd = speed;
}
Entity.prototype.moveLeft = function(speed){
this.xd = speed;
}
Entity.prototype.stopMove = function(){
this.xd = 0;
}
// end of player controls
}
var player = new Entity(20,20,0,0,3,0,1,50,75,playerSprite,true); {}
// key events
document.body.addEventListener("keydown", function (e) {
keys[e.keyCode] = true;
});
document.body.addEventListener("keyup", function (e) {
keys[e.keyCode] = false;
});