javascript - html5 Canvas 图像落后于其他绘制的对象

标签 javascript html image canvas

我正在创建一个 html5 canvas 游戏,主要思想是每个动画都有一个循环,在每一帧中重绘我 Canvas 上的所有内容。 由于某种原因,绘制的对象没有按照我希望的顺序出现。我首先想要背景图像,然后是一个矩形,最后是另一个图像显示在彼此之上。但是,矩形挡住了第二个图像的 View 而不是其他方式。

我的相关代码:

function playerdraw(p){ 
ctx.rect(p.x,p.y,100,150);
ctx.stroke();
//irrelevant stuff here...
ctx.drawImage(p.im,p.x,p.y+25,100,100);
}

我在 window.onload 上运行整个程序,因此图像加载应该不是问题。 为什么会这样?

最佳答案

(因为您没有提供足够的代码,我认为这可能是问题所在。)

每次运行 playerdraw() 函数时都需要重新绘制背景图像(如果每次都清除整个 Canvas )。所以,下面的代码应该可以工作:

function playerdraw(p) {
    // clear entire canvas
    ctx.clearRect(...);
    // draw background image
    ctx.drawImage(...);
    // draw rectangle
    ctx.rect(p.x, p.y, 100, 150);
    ctx.stroke();
    // irrelevant stuff here...
    // draw other image
    ctx.drawImage(p.im, p.x, p.y + 25, 100, 100);
}

注意:您需要在一开始就清除整个 Canvas (如果您这样做的话)。还有一种可能是您正在做某种 Canvas 翻译缩放 的事情,如果以错误的顺序进行,事情可能会变得一团糟。

关于javascript - html5 Canvas 图像落后于其他绘制的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42399080/

相关文章:

html - iphone 显示屏中的 slider

html - 选择选项菜单中的自动换行

image - 从 dataDirectory 文件路径设置为 img 的 src

image - 如何从 URL 获取图像到 Flutter 中的文件?

image - 颜色图显示灰度图像之间的差异

javascript - 在 jquery 中立即为 div 设置更大和更小的动画

javascript - 用 jQuery 替换 href 元素

html - 我怎样才能用CSS显示边框?

javascript - 注入(inject) Angular 服务时运行相同的代码

javascript - CSS/HTML double font color into a SELECT OPTION