From 4835b0b367bfbff95c3723ff03ebb86d26c6db37 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Thu, 22 Aug 2024 23:51:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E6=96=87=E5=AD=97?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/render/preset/damage.ts | 2 -- src/core/render/preset/layer.ts | 2 -- src/core/render/preset/misc.ts | 18 +++++++++++++----- src/core/render/sprite.ts | 2 ++ src/plugin/fx/itemDetail.ts | 1 - 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/core/render/preset/damage.ts b/src/core/render/preset/damage.ts index bcbc94b..76ce1e4 100644 --- a/src/core/render/preset/damage.ts +++ b/src/core/render/preset/damage.ts @@ -170,12 +170,10 @@ export class Damage extends Sprite { this.setRenderFn((canvas, camera) => { const { ctx } = canvas; const { width, height } = canvas.canvas; - ctx.save(); ctx.imageSmoothingEnabled = false; this.renderDamage(camera); ctx.setTransform(1, 0, 0, 1, 0, 0); ctx.drawImage(this.damageMap.canvas, 0, 0, width, height); - ctx.restore(); }); } diff --git a/src/core/render/preset/layer.ts b/src/core/render/preset/layer.ts index c085471..4f835d2 100644 --- a/src/core/render/preset/layer.ts +++ b/src/core/render/preset/layer.ts @@ -669,7 +669,6 @@ export class Layer extends Container { this.main.setRenderFn((canvas, transform) => { const { ctx } = canvas; const { width, height } = canvas.canvas; - ctx.save(); ctx.imageSmoothingEnabled = false; const need = this.calNeedRender(transform); this.renderMap(transform, need); @@ -677,7 +676,6 @@ export class Layer extends Container { ctx.drawImage(this.backMap.canvas, 0, 0, width, height); ctx.drawImage(this.staticMap.canvas, 0, 0, width, height); ctx.drawImage(this.movingMap.canvas, 0, 0, width, height); - ctx.restore(); }); } diff --git a/src/core/render/preset/misc.ts b/src/core/render/preset/misc.ts index 630db02..447ba08 100644 --- a/src/core/render/preset/misc.ts +++ b/src/core/render/preset/misc.ts @@ -9,6 +9,7 @@ export class Text extends Sprite { fillStyle?: CanvasStyle = '#fff'; strokeStyle?: CanvasStyle; font?: string = ''; + strokeWidth: number = 1; private length: number = 0; private descent: number = 0; @@ -22,19 +23,18 @@ export class Text extends Sprite { if (text.length > 0) this.calBox(); this.renderFn = ({ canvas, ctx }) => { - ctx.save(); ctx.textBaseline = 'bottom'; ctx.fillStyle = this.fillStyle ?? 'transparent'; ctx.strokeStyle = this.strokeStyle ?? 'transparent'; ctx.font = this.font ?? ''; + ctx.lineWidth = this.strokeWidth; - if (this.fillStyle) { - ctx.fillText(this.text, 0, this.descent); - } if (this.strokeStyle) { ctx.strokeText(this.text, 0, this.descent); } - ctx.restore(); + if (this.fillStyle) { + ctx.fillText(this.text, 0, this.descent); + } }; } @@ -79,6 +79,14 @@ export class Text extends Sprite { this.strokeStyle = stroke; } + /** + * 设置描边宽度 + * @param width 宽度 + */ + setStrokeWidth(width: number) { + this.strokeWidth = width; + } + /** * 计算字体所占空间,从而确定这个元素的大小 */ diff --git a/src/core/render/sprite.ts b/src/core/render/sprite.ts index b16474e..f1defda 100644 --- a/src/core/render/sprite.ts +++ b/src/core/render/sprite.ts @@ -29,7 +29,9 @@ export class Sprite extends RenderItem< canvas: MotaOffscreenCanvas2D, transform: Transform ): void { + canvas.ctx.save(); this.renderFn(canvas, transform); + canvas.ctx.restore(); } setRenderFn(fn: RenderFunction) { diff --git a/src/plugin/fx/itemDetail.ts b/src/plugin/fx/itemDetail.ts index 382e1fe..2f0cbd2 100644 --- a/src/plugin/fx/itemDetail.ts +++ b/src/plugin/fx/itemDetail.ts @@ -1,6 +1,5 @@ import { logger } from '@/core/common/logger'; import { mainSetting } from '@/core/main/setting'; -import { Camera } from '@/core/render/camera'; import { Damage, DamageRenderable,