二七王:回退自造的图集叠绘,改用平台既有 SpriteManager.setNumberImage

方案作废并纠正认知:多帧图片精灵【不是】只能显示一位数——SpriteManager 第 1154 行
早有 setNumberImage(spriteId, text, charWidth):把整串文本设给一个多帧图片精灵,
引擎按字符逐帧渲染,精灵宽度按「字符数 × charWidth」自动调整。bc75e40 造的
drawImageRegion + NumberRenderer 是重复轮子,本次整体回退(revert bc75e40)。

- 回退:删除 gameabc-framework/ui/NumberRenderer.js 与其单测,SpriteManager 与
  index.html 恢复到改动前(与 bc75e40^ 逐字节一致)。
- ImageResources.js:数字类资源改为 16 帧、固定帧序 0123456789.+-x/p,逐条写明
  各帧含义、第16帧后缀(选主张数=「张」;结算/叫分的后缀标注待美术与规则确认,未瞎填)、
  单字符宽高与整图尺寸(16 × 单字宽),并说明帧序不可重排、不可省略占位。
- LayoutConstants.js:NUM_STYLE 改为 setNumberImage 所需的 res/charWidth/charHeight/suffix。
- Layout_Action.js:两个数字节点 h 取 charHeight(SSOT),w 留运行时注入
  (宽度由 setNumberImage 按字符数自动改,随位数变)。
- Sprites_Action.js / Sprites_Result.js:注释改为 setNumberImage 用法;
  结算玩家栏 ACC_TPL_SCORE_NUM 是复制精灵也能用(该接口不依赖绘制回调)。
- test_constants.js:NUM_STYLE 守卫改为校验 charWidth/charHeight/suffix 与
  「h 同源、w 运行时注入」;suffix 限定为 setNumberImage 支持的 分/倍/张。
- 文档:清单 §1.3/§1.5/§3.6/§5.4/§6.8 与前端 02 的那一节全部按 setNumberImage 重写,
  三种机制改为「文字精灵 / setFrame 切帧 / setNumberImage」,并记下这次误判作为反例。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-27 00:07:35 +08:00
co-authored by Claude Opus 5
parent dbdd6607d7
commit 35ee85e1d6
12 changed files with 174 additions and 712 deletions
@@ -281,30 +281,41 @@ var EQW_Images = EQW_Images || {
//===================== §3.6 数字与符号 =====================
//
//【2026-08-26 出图方式变更】以下 NUM_* 数字类资源【不是】编辑器里配好帧数的多帧资源,
//而是【等宽连续排列的一张图】:所有字符横向排成一行、每格等宽,图里不留间隙。
//代码不用 setFrame(一个精灵一次只显示一帧=只能显示一位数),改为按字宽裁源矩形叠绘:
//第 idx 格的源矩形 = (idx * 单字宽, 0, 单字宽, 单字高),由框架 NumberRenderer 逐位画在
//【同一个】精灵上,故一个多位数只需一个精灵。样式(单字宽高/字间距/对齐/绘制区宽)见
//EQW_Layout.NUM_STYLE.*(LayoutConstants.js),本处只记出图规格。
//美术出图请严格按「字符排列顺序 + 单字符宽高 + 整图尺寸」执行,字符必须等宽对齐格子。
//【数字类资源的统一规范:16 帧固定帧序】(2026-08-26 订正)
//以下 NUM_* 一律是【多帧图片资源,16 帧】,帧序固定为:0 1 2 3 4 5 6 7 8 9 . + - x / p
// 帧1–10 = 数字 0–9 帧11 = 「.」 帧12 = 「+」 帧13 = 「-」
// 帧14 = 「x」 帧15 = 「/」 帧16 = 可变后缀(该套资源自己的后缀字,如「分」「倍」「张」)
//
//用法前提:显示多位数字【不拆精灵、不用 setFrame 逐位切】,而是用平台既有接口
// SpriteManager.setNumberImage(spriteId, text, charWidth)
//把整串文本设给【一个】多帧图片精灵,引擎按字符逐帧渲染,精灵宽度由该接口按
//【字符数 × charWidth】自动调整(charWidth 见 EQW_Layout.NUM_STYLE.*,本处只记出图规格)。
//
//出图要求:帧号由字符直接换算('0'–'9' → 帧1–10,后缀 → 帧16),所以帧序【不可重排、不可省略占位】——
//即使某套资源用不到 . + - x / 这几帧,也要按顺序留出帧位,否则帧号对不上、画面串位。
//整图尺寸一律 = 16 × 单字符宽(横向 16 帧)。
//用途:倒计时数字(带描边/渐变美术字)
//排列:等宽连续一行,字符顺序 0 1 2 3 4 5 6 7 8 9(索引 0–9)
//帧数:16(固定帧序 0123456789.+-x/p)
//帧说明:帧1–10 = 0–9;帧11–15 = . + - x /(本套用不到,仅占位);
// 帧16 = 后缀【本套无后缀,出空白占位】
//单字符尺寸:44×60
//整图尺寸:440×60(10 格 × 44)
//整图尺寸:704×60(16 帧 × 44)
NUM_COUNTDOWN: 631,
//用途:结算得分数字(赢,橙,带描边/渐变美术字)
//排列:等宽连续一行,字符顺序 0 1 2 3 4 5 6 7 8 9 + -(索引 0–9 为数字,10 = 「+」,11 = 「-」)
//帧数:16(固定帧序 0123456789.+-x/p)
//帧说明:帧1–10 = 0–9;帧12 = 「+」、帧13 = 「-」(得分带正负号,必出);帧11/14/15 = . x /(占位);
// 帧16 = 后缀【待美术与规则确认:结算大字目前只显示数字,若日后要显示「+120分」则此帧出「分」】
//单字符尺寸:46×62
//整图尺寸:552×62(12 格 × 46)
//整图尺寸:736×62(16 帧 × 46)
NUM_RESULT_WIN: 632,
//用途:结算得分数字(输,蓝,带描边/渐变美术字)
//排列:与 NUM_RESULT_WIN 完全一致——等宽连续一行,0–9 后接 「+」「-」(共 12 格),仅配色不同
//帧数:16(固定帧序 0123456789.+-x/p)
//帧说明:与 NUM_RESULT_WIN 完全一致(含帧16 待确认项),仅配色不同
//单字符尺寸:46×62
//整图尺寸:552×62(12 格 × 46)
//整图尺寸:736×62(16 帧 × 46)
NUM_RESULT_LOSE: 633,
//用途:判定结果动画(大光/小光/过庄/升N级/投降)——帧动画资源,播放参数进 AnimationConfigs【待设计 D-8】
@@ -314,16 +325,21 @@ var EQW_Images = EQW_Images || {
ANI_JUDGE: 634,
//用途:叫分档位的分数数字(深棕描边美术字,带描边/渐变,文字精灵做不出此效果)
//排列:等宽连续一行,字符顺序 0 1 2 3 4 5 6 7 8 9(索引 0–9)
//帧数:16(固定帧序 0123456789.+-x/p)
//帧说明:帧1–10 = 0–9;帧11–15 = . + - x /(本套用不到,仅占位);
// 帧16 = 后缀【待确认:档位面板只显示分数数字(70…5),若日后要显示「70分」则此帧出「分」】
//单字符尺寸:30×40
//整图尺寸:300×40(10 格 × 30)
//说明:14 个档位中 13 个是两位数(70…10),靠叠绘一个精灵画两位,见 Sprites_Action.js 的 CALL_BTN_NUM_1..14
//整图尺寸:480×40(16 帧 × 30)
//说明:14 个档位中 13 个是两位数(70…10),整串交给 setNumberImage,一档【一个】精灵,
// 见 Sprites_Action.js 的 CALL_BTN_NUM_1..14;面板上的「N子」角标是文字精灵,不走本资源
NUM_CALL_SCORE: 635,
//用途:选主面板花色张数数字(美术单独出图,字号配色与以上几套不同;一个花色一个精灵,见 Sprites_Action.js)
//排列:等宽连续一行,字符顺序 0 1 2 3 4 5 6 7 8 9(索引 0–9)
//帧数:16(固定帧序 0123456789.+-x/p)
//帧说明:帧1–10 = 0–9;帧11–15 = . + - x /(本套用不到,仅占位);
// 帧16 = 后缀「张」(显示形如「26张」,后缀与数字等宽,同为单字符宽)
//单字符尺寸:24×32(估值,与选主按钮 128×55 协调估算,出图前须与最终设计稿核对)
//整图尺寸:240×32(10 格 × 24)
//整图尺寸:384×32(16 帧 × 24)
NUM_MAIN_SUIT_COUNT: 636,
//===================== §3.7 浮层与气泡 =====================