From 9628d7acb789ad495128d8ac175d22af83644d83 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Thu, 12 Jun 2025 15:53:49 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=94=BB=E9=9D=A2=E6=B8=85=E6=99=B0?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/render/components/textboxTyper.ts | 8 ++++---- .../client-modules/src/render/elements/layer.ts | 12 ++++++------ .../client-modules/src/render/elements/misc.ts | 2 +- packages/render-core/src/item.ts | 6 +++++- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/packages-user/client-modules/src/render/components/textboxTyper.ts b/packages-user/client-modules/src/render/components/textboxTyper.ts index c3ab13e..397ec81 100644 --- a/packages-user/client-modules/src/render/components/textboxTyper.ts +++ b/packages-user/client-modules/src/render/components/textboxTyper.ts @@ -990,7 +990,6 @@ export class TextContentParser { data.splitLines.push(this.wordBreak[index]); this.lineHeights.push(this.lineHeight); this.lineWidths.push(this.lineWidth); - this.bsStart = index; const text = data.text.slice( this.wordBreak[index] + 1, pointer + 1 @@ -1002,10 +1001,11 @@ export class TextContentParser { } maxWidth = width; const metrics = ctx.measureText(text); - if (metrics.width < maxWidth) { + if (metrics.width < maxWidth || index === this.bsStart) { this.lastBreakIndex = index; break; } + this.bsStart = index; } this.lineWidth = 0; this.lineStart = pointer; @@ -1092,7 +1092,6 @@ export class TextContentParser { data.splitLines.push(this.wordBreak[index]); this.lineHeights.push(this.lineHeight); this.lineWidths.push(this.lineWidth); - this.bsStart = index; const text = data.text.slice(this.wordBreak[index] + 1); if (!isLast && text.length < guess / 4) { // 如果剩余文字很少,几乎不可能会单独成一行时,直接结束循环 @@ -1101,10 +1100,11 @@ export class TextContentParser { } const metrics = ctx.measureText(text); maxWidth = width; - if (metrics.width < maxWidth) { + if (metrics.width < maxWidth || index === this.bsStart) { this.lastBreakIndex = index; break; } + this.bsStart = index; } this.lineWidth = 0; return true; diff --git a/packages-user/client-modules/src/render/elements/layer.ts b/packages-user/client-modules/src/render/elements/layer.ts index 652140f..fe2bc12 100644 --- a/packages-user/client-modules/src/render/elements/layer.ts +++ b/packages-user/client-modules/src/render/elements/layer.ts @@ -628,13 +628,13 @@ export class Layer extends Container { this.size(core._PX_, core._PY_); this.staticMap.setHD(false); - // this.staticMap.setAntiAliasing(false); + this.staticMap.setAntiAliasing(false); this.staticMap.size(core._PX_, core._PY_); this.movingMap.setHD(false); - // this.movingMap.setAntiAliasing(false); + this.movingMap.setAntiAliasing(false); this.movingMap.size(core._PX_, core._PY_); this.backMap.setHD(false); - // this.backMap.setAntiAliasing(false); + this.backMap.setAntiAliasing(false); this.backMap.size(core._PX_, core._PY_); this.main.setAntiAliasing(false); this.main.setHD(false); @@ -778,11 +778,11 @@ export class Layer extends Container { if (!data) return; const frame = data.frame; - const temp = this.requireCanvas(); + const temp = this.requireCanvas(true, false); temp.setHD(false); temp.setAntiAliasing(false); for (let i = 0; i < frame; i++) { - const canvas = this.requireCanvas(); + const canvas = this.requireCanvas(true, false); const ctx = canvas.ctx; const tempCtx = temp.ctx; const [sx, sy, w, h] = data.render[i]; @@ -1198,7 +1198,7 @@ export class Layer extends Container { const ex = Math.min(sx + blockSize, this.mapWidth); const ey = Math.min(sy + blockSize, this.mapHeight); - const temp = this.requireCanvas(); + const temp = this.requireCanvas(true, false); temp.setAntiAliasing(false); temp.setHD(false); temp.size(core._PX_, core._PY_); diff --git a/packages-user/client-modules/src/render/elements/misc.ts b/packages-user/client-modules/src/render/elements/misc.ts index 4a01d56..004a2f1 100644 --- a/packages-user/client-modules/src/render/elements/misc.ts +++ b/packages-user/client-modules/src/render/elements/misc.ts @@ -179,7 +179,7 @@ export class Winskin extends RenderItem { } private generatePattern() { - const pattern = this.requireCanvas(); + const pattern = this.requireCanvas(true, false); pattern.setScale(1); const img = this.image; pattern.size(32, 16); diff --git a/packages/render-core/src/item.ts b/packages/render-core/src/item.ts index 6877998..3266cb5 100644 --- a/packages/render-core/src/item.ts +++ b/packages/render-core/src/item.ts @@ -461,7 +461,11 @@ export abstract class RenderItem */ requireCanvas(alpha: boolean = true, autoScale: boolean = true) { const canvas = new MotaOffscreenCanvas2D(alpha); - canvas.setScale(this.scale); + if (autoScale) { + canvas.setScale(this.scale); + } else { + canvas.setScale(1); + } this.canvases.add(canvas); this.canvasMap.set(canvas, { autoScale }); return canvas;