Javascript 使用8个参数将图像绘制到画布不起作用

Javascript 使用8个参数将图像绘制到画布不起作用,javascript,html,drawimage,Javascript,Html,Drawimage,我知道这不是一个关于一般代码问题的问题,但我真的需要帮助修复我的代码。现在,我正在自己开发我的第一个HTML5程序,这是一个非常简单的自上而下的程序。现在,我已经编写了代码,这样屏幕上就会出现一艘船,你可以左右移动。然而,现在我正在尝试创建一个新的对象来绘制,名为bullet。我从飞船上复制了一些代码,但我无法让它工作。到目前为止,代码如下。它相当小,所以你可以理解这艘船。这是ship对象: function ship() { this.width = 100; this.hei

我知道这不是一个关于一般代码问题的问题,但我真的需要帮助修复我的代码。现在,我正在自己开发我的第一个HTML5程序,这是一个非常简单的自上而下的程序。现在,我已经编写了代码,这样屏幕上就会出现一艘船,你可以左右移动。然而,现在我正在尝试创建一个新的对象来绘制,名为bullet。我从飞船上复制了一些代码,但我无法让它工作。到目前为止,代码如下。它相当小,所以你可以理解这艘船。这是ship对象:

function ship() {
    this.width = 100;
    this.height = 75;
    this.drawX = gameWidth/2 - this.width/2;
    this.drawY = gameHeight - this.height - 5;
}
画出来,我用这个函数:

ship.prototype.draw = function() {
    clearCtx(ctxPlayer);
    var srcX;
    var srcY;
    if(isRightKey) {
        srcX = 0;
        srcY = 75;
    } else if (isLeftKey) {
        srcX = 0;
        srcY = 153;
    } else {
        srcX= 0;
        srcY = 0;
    }

    ctxPlayer.drawImage(sprites,srcX,srcY,this.width,this.height,this.drawX,this.drawY, this.width, this.height);
}
朝顶部移动的东西只会改变图像的来源,因为如果图像以某种方式移动,则图像是不同的。无论如何,这是bullet对象:

function BulletGreen() {
    var drawX = 0;
    var drawY = 0;
    var height = 33;
    var width = 9;
}
正如你所看到的,这很相似。下面是我用来画它的代码:

BulletGreen.prototype.draw = function drawBulletsGreen() {
    ctxPlayer.drawImage(sprites,350,0,this.width,this.height,this.drawX,this.drawY, this.width, this.height);
}
但是,当我在控制台中使用命令时,这似乎不起作用。它不会返回任何错误,但似乎根本不会更改画布。然而,做一些像

ctxBullet.drawImage(sprites,0,0)
将在画布上绘制精灵表。如果这种问题在这里不受欢迎,我很抱歉,但我只是没有主意!这真让我困惑


编辑:我在这里上传了所有内容。

我想我的回答是正确的: ctxPlayer是您的画布对象,sprites是新图像src(例如abc.png),那么您可以只使用其中的5个参数而不是使用8个参数来绘制图像吗?在你的情况下,我想那会是

ctxPlayer.drawImage(sprites,this.drawX,this.drawY, this.width, this.height);
在哪里,

this.drawX is the x coordinate where to place the image on the canvas
this.drawY is the x coordinate where to place the image on the canvas
this.width is width of the image
this.height is height of the image
类似的参数也适用于我。。我想他们也会为你工作:)

这是我找到的参考url:


同样在clearCtx(ctxPlayer)中;您是在清除整个画布还是在上一幅图像的绘制位置?如果您试图清除整个画布,则必须再次完全重新绘制

您的示例在线吗?或者你能把完整的代码上传到某个地方或者创建一个JSFIDLE吗?我不认为我能做一个FIDLE,因为它使用图像,但我会尝试上传代码。好的,我添加了完整的程序。嗯,我正在绘制一个精灵表,所以我需要8个参数。为什么8不起作用呢?