我做了一个赛道游戏。我正在尝试使其在移动设备上具有可扩展性。
当设备方向正常(垂直)时,我能够使它看起来很好:
但是当我将设备旋转到水平 View 时,会发生这种情况:(如何将其缩小一点)?
你会推荐做什么?我用了display: none
隐藏图像。
我真的很感激任何帮助。
编辑:我已经设法做到这一点,但 View 仍然放大太多,有什么想法吗?
const width = 800;
const height = 600;
const pixelRatio = window.devicePixelRatio || 1;
canvas.width = width * pixelRatio;
canvas.height = height * pixelRatio;
canvas.style.width = `${width}px`;
canvas.style.height = `${height}px`;
// for sprites scaled up to retina resolution
canvas.mozImageSmoothingEnabled = false;
canvas.imageSmoothingEnabled = false;
c.scale(pixelRatio, pixelRatio);
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, height=device-height">
<!-- <meta name="viewport" content="width=device-width, initial-scale=1"> -->
<title>Canvas Story</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
canvas {
display: block;
}
body {
margin: 0;
}
#container {
margin: 0 auto;
width: 800px;
height: 600px;
overflow: hidden;
position: relative;
border: 1px solid #000;
border-radius: 10px;
margin-top: 2px;
}
</style>
</head>
<body>
<br/>
<img id="obstacle" src="obstacle.png" style="display: none;" />
<img id="bonus" src="bonus.png" style="display: none;" />
<img id="bullet" src="bullet.png" style="display: none;" />
<img id="car" src="car.png" style="display: none;" />
<div id="container">
<canvas id="ltpcanvas"></canvas>
</div>
<div class="circleBase" id="rotateMode" style="margin:0 auto;">
<button id="left" onmousedown="leftKeyPressed()" onmouseup="leftKeyReleased()" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-arrow-left"></span></button>
<button id="right" onmousedown="rightKeyPressed()" onmouseup="rightKeyReleased()" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-arrow-right"></span></button>
<button id="middle" onclick="bulletsPush()" class="btn btn-default btn-sm"><span class="glyphicon glyphicon glyphicon-record"></span></button>
<button id="up" onmousedown="upKeyPressed()" onmouseup="upKeyReleased()" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-arrow-up"></span></button>
<button id="down" onmousedown="downKeyPressed()" onmouseup="downKeyReleased()" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-arrow-down"></span></button>
</div>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="css.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="canvas.js"></script>
</body>
</html>
最佳答案
在 head 标签中使用它:
<meta name="viewport" content="width=device-width, initial-scale=1">
width=device-width 部分设置页面的宽度以跟随设备的屏幕宽度(这将因设备而异)。initial-scale=1.0 部分设置浏览器首次加载页面时的初始缩放级别。
和
在动画中添加这些:
c.clearRect(0, 0, canvas.width, canvas.height);
drawCanvas(boundaryLeftOffset - 2, 0,window.innerWidth,
window.innerHeight, 'grey');
关于javascript - Canvas 设备方向缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65113052/