diff --git a/web/src/components/game/Viewport.vue b/web/src/components/game/Viewport.vue index 1453907..db8e7bb 100644 --- a/web/src/components/game/Viewport.vue +++ b/web/src/components/game/Viewport.vue @@ -72,25 +72,8 @@ function fitMap() { watch(() => [props.screenWidth, props.screenHeight], ([w, h]) => { if (viewport) { - // 1. Resize Viewport 视口尺寸更新 - viewport.resize(w, h, props.worldWidth, props.worldHeight) - - // 2. 重新计算适配比例 - const fitScale = Math.min(w / props.worldWidth, h / props.worldHeight) - - // 3. 设定缩放限制 - // 确保 maxScale 始终大于 minScale,防止地图极小时崩溃 - const minScale = fitScale * 0.8 - const maxScale = Math.max(4.0, minScale * 2.0) - - viewport.clampZoom({ minScale, maxScale }) - - // 4. 自动修正缩放 - // 如果当前缩放过小(导致黑边),或者因为初始化时的尺寸问题导致缩放不正确,强制恢复到适配大小 - if (viewport.scaled < minScale * 0.95) { - viewport.setZoom(fitScale) - viewport.moveCenter(props.worldWidth / 2, props.worldHeight / 2) - } + // 窗口尺寸变化时,直接重新适配地图,确保自动 Zoom 和居中 + fitMap() } })