Внутри функции draw () вы проверяете, превышает ли положение шариков границы холста.
if (x + dx > 480) {
и
if (y + dy > 680) {
Так какВы хотите, чтобы шар оставался в границах, даже если размеры окна изменились, нам нужно получить фактический размер холста.В самом начале вы определили переменную, которая содержит ссылку на холст.
var canvas = document.getElementById("myCanvas");
Используя это, мы можем получить фактический размер, вызвав canvas.width & canvas.высота .
Итак, два вышеуказанных оператора if становятся:
if (x + dx > canvas.width) {
if (y + dy > canvas.height) {
Теперь, если пользователь изменяет размер окна, будет вызвана следующая функция:
function resizeCanvas() {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
}
Как видите, мы обновляем свойства ширины и высоты холста размером окна.
Остальное - это просто объединение двух фрагментов в один - что не составляет большого труда.Вот рабочий пример:
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var x = canvas.width / 2;
var y = canvas.height / 2;
// SPEED
var dx = 2;
var dy = -2;
var radius = 100;
function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.beginPath();
ctx.arc(x, y, radius, 0, Math.PI * 2);
ctx.fillStyle = "#9370DB";
ctx.fill();
ctx.closePath();
if (x + dx > canvas.width - radius) {
dx = -dx;
}
if (x + dx < radius) {
dx = -dx;
}
if (y + dy > canvas.height - radius) {
dy = -dy;
}
if (y + dy < radius) {
dy = -dy;
}
x += dx;
y += dy;
}
// resize the canvas to fill browser window dynamically
window.addEventListener('resize', resizeCanvas, false);
function resizeCanvas() {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
}
resizeCanvas();
x = canvas.width / 2;
y = canvas.height / 2;
setInterval(draw, 10);
<canvas id="myCanvas">
<h1>Bouncing Ball</h1>
</canvas>