【发布时间】:2020-08-23 15:44:20
【问题描述】:
我正在开发我的第一个 HTML5 Canvas 游戏。我正在尝试放入背景图像,但我不知道该怎么做。游戏会在整个关卡中改变背景,但我想我知道如何做到这一点。但是,如果我只是尝试绘制图像,那么它会出现在我的标题文本上方。任何想法如何解决这一问题?我不认为 CSS 方法会起作用,因为背景会改变。这是我的代码:
<!DOCTYPE html>
<html>
<head>
<title>How Well Do You Know Your Swedish?</title>
</head>
<body>
<canvas width="640" height="480" id="game" style="display: block; margin-left: auto; margin-right: auto; border: 1px solid black;" Your Browser is not compatible with this game. We recommend Google Chrome, Mozilla Firefox, or Opera.></canvas>
<script>
var game_canvas = document.getElementById("game");
var game_context = game_canvas.getContext("2d");
var swedishflagbg = new Image();
swedishflagbg.src = "resources/images/swedishflagbg.png";
swedishflagbg.onload = function() {
game_context.drawImage(swedishflagbg, 0, 0);
}
game_context.fillStyle = "#000000";
game_context.font = "35px Ubuntu";
game_context.textAlign = "center";
game_context.textBaseline = "top";
game_context.fillText("How Well Do You Know Your Swedish?", 320, 0);
</script>
</body>
</html>
我是 JavaScript 新手,甚至是 HTML5 Canvas 的新手。
【问题讨论】:
-
因为背景是在
onload事件中绘制的,而您的文本是立即绘制的。您也可以将文本绘图放在onload事件中,但 IMO 更好的解决方案是使用两个画布,一个用于背景,一个用于前景,并使用 CSS 相应地放置它们。 -
@Passerby:也许扩展您的评论并将其作为答案发布,因为您已经回答了问题 (+1)。由于背景非常静态,您可能会使用图像而不是背景画布(移动设备处理画布元素的速度较慢,因此使用 1 张图像 + 1 张画布可能会更好)。
标签: javascript html canvas html5-canvas background-image