Это, скорее всего, связано с тем, что вы загружаете изображение плоскости каждые l oop и рисуете его в обработчике onload
. Это вызовет async
на вызов Plane()
после загрузки изображения (даже если оно загружено из кэша). Рисование здесь означает, что оно рисуется async
для вашего рендера l oop, и вы не контролируете свой порядок рисования.
Вместо этого вам следует загрузить изображение перед началом рендеринга и повторно использовать это повсюду. Например:
const canvas = this.refs.canvas
const contex = canvas.getContext('2d')
const image1 = new Image()
function DrawBoard() {
contex.fillStyle = "black"
contex.fillRect(0, 0, 1200, 350)
}
function Plane() {
contex.drawImage(image1, planeX - 110, planeY - 90, 200, 160);
}
function Game() {
DrawBoard()
Plane()
}
function Animate() {
Game()
window.requestAnimationFrame(Animate)
}
// Start the animation after the plane image is loaded
image1.onload = function () {
Animate()
}
image1.src = "Plane.png"