Почему растягивается изображение в Canvas?
Доброго времени суток, друзья!
Делаю клон змейки на canvas и изображения яблока у меня странное: Вот. Но нормальное яблоко у меня 32px на 32px ![]() Код рисования:
const canvas = document.getElementById("game");
const ctx = canvas.getContext("2d");
const foodImg = new Image();
foodImg.src = "img/food.png";
let widthField = canvas.width;
let heightField = canvas.height;
let box = 32;
food = {
x: Math.floor((Math.random() * (widthField - box))),
y: Math.floor((Math.random() * (heightField - box))) ,
width: box,
height: box
};
};
function drawGame () {
ctx.drawImage(foodImg, food.x, food.y, food.width, food.height);
}
let game = setInterval(drawGame, 100);
Я уж и размер яблоку задал. Уменьшается, если размер делить на двое. Почему его так колбасит то? Изначально же должно быть нормального размера! Благодарю за помощь! |
dandiablo,
вы что-то не договариваете ...
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
#game {
border: 1px solid #8B4513;
}
</style>
</head>
<body>
<canvas height="300" width="300" id="game"></canvas>
<script>
const canvas = document.getElementById("game");
const ctx = canvas.getContext("2d");
const foodImg = new Image();
foodImg.src = "https://i.postimg.cc/QMgFDqpk/food.png";
let widthField = canvas.width;
let heightField = canvas.height;
let box = 32;
function drawGame() {
let food = {
x: Math.floor((Math.random() * (widthField - box))),
y: Math.floor((Math.random() * (heightField - box))),
width: box,
height: box
};
ctx.drawImage(foodImg, food.x, food.y, food.width, food.height);
}
let game = setInterval(drawGame, 1000);
</script>
</body>
</html>
|
Что же интересно, я могу не договаривать? Ваши предположения?
Единственное отличие: у Вас: <canvas height="300" width="300" id="game"></canvas> У меня: <canvas id="game"></canvas> И параметры, соответственно, в CSS:
#game{
width: 647px;
height: 517px;
border: 5px #24722a solid;
background: rgba(223, 190, 3, 0.8);
border-radius: 10px;
}
|
dandiablo,
надо выставлять размер через атрибуты. если ты в стилях указал width: 647px; и height: 517px;, это не значит, что холст будет состоять из 647х517 пикселей. У него есть какие-то дефолтные размеры холста, вот они и растянутся. |
Япона мама!
Действительно, стоило только вынести высоту и ширину из css в canvas, как надо было, так все и заработало! Спасибо, что повторили, увидел разницу. Вот бы уж не подумал... Оо! |
Блин, вот об этом не говорили ни где. Буду знать, благодарю!
|
Цитата:
https://developer.mozilla.org/ru/doc...%D0%B8% D0%B5 Цитата:
|
| Часовой пояс GMT +3, время: 22:12. |