Поэтому я использую функцию из этого учебникаНужна помощь репозиционирование круга, когда размер холста меняется
это выглядит -
function resizeGame() {
var gameArea = document.getElementById('canvas-container');
var widthToHeight = 11/6;
var newWidth = window.innerWidth;
var newHeight = window.innerHeight;
var newWidthToHeight = newWidth/newHeight;
if (newWidthToHeight > widthToHeight) {
newWidth = newHeight * widthToHeight;
gameArea.style.height = newHeight + 'px';
gameArea.style.width = newWidth + 'px';
} else {
newHeight = newWidth/widthToHeight;
gameArea.style.width = newWidth + 'px';
gameArea.style.height = newHeight + 'px';
}
gameArea.style.marginTop = (-newHeight/2) + 'px';
gameArea.style.marginLeft = (-newWidth/2) + 'px';
var gameCanvas = document.getElementById('ctx');
gameCanvas.width = newWidth;
gameCanvas.height = newHeight;
HEIGHT = newHeight;
WIDTH = newWidth
}
Так что все, что я используйте WIDTH и HEIGHT для позиционирования на холсте. Но есть и другие вещи, которые у меня есть в моей игре, которые просто используют x и y и не меняются с помощью холста.
if(drawBall){
ctx.save();
ctx.beginPath();
ctx.arc(ball.x, ball.y, (ball.diameter/2) - 5,0, 2*Math.PI);
ctx.fillStyle = ball.color;
ctx.fill();
ctx.restore();
}
Что я могу сделать с моим ball.x и ball.y, чтобы он правильно изменился с помощью холста?
Можем ли мы получить фрагмент или скрипку, чтобы увидеть, как она выглядит, когда она работает? –
Я верю ball.x и ball.y - координаты x и y. Учитывая высоту и ширину окна, не будет ли определенный процент от этого, дайте вам любую заданную координату? –
Так что я должен использовать соотношение 11/6 ..? – joe