二七王:回退自造的图集叠绘,改用平台既有 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:
+48
-38
@@ -535,15 +535,15 @@ EQW_RoomOptions = {
|
||||
|
||||
| 元素 | 精灵类型 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| **叫分的分数**(70/65/…/5) | **图集叠绘数字精灵**(资源 `NUM_CALL_SCORE`,样式 `NUM_STYLE.CALL_SCORE`) | 带描边、需与图一致的美术字;**一个精灵画完整两位数** |
|
||||
| **叫分的分数**(70/65/…/5) | **多帧图数字精灵**(资源 `NUM_CALL_SCORE`,`SpriteManager.setNumberImage`) | 带描边、需与图一致的美术字;**一个精灵显示整串**(两位数不拆精灵) |
|
||||
| **角标的子数**(`2子`/`7子`…) | **文字精灵**(`SpriteManager.setText`) | 随爬坡开关动态变,值域 2–15,用文字精灵最省 |
|
||||
|
||||
故每档 **3 个精灵**:按钮底(含角标底)+ 分数数字精灵 + 角标文字精灵。
|
||||
|
||||
> **2026-08-26 修订(档位分数的实现方式)**:14 档里 **13 档是两位数**(70…10),而每档只有**一个**分数精灵。
|
||||
> 多帧图片精灵靠 `setFrame` 切帧、**一次只显示一帧=只能显示一位数**,按原方案这 13 档**根本渲染不出来**(要么显示不全,要么被迫每档再加一个十位精灵、精灵数翻倍)。
|
||||
> 因此改为**图集叠绘**:`NUM_CALL_SCORE` 出成等宽连续的一张图(§3.6),由框架 `NumberRenderer` 在精灵的绘制回调里按字宽逐位裁源矩形、画在**同一个**精灵内的不同 x 上。
|
||||
> 于是 `CALL_BTN_NUM_1..14` **保持 14 个不变**,且现在能正确显示两位数。用法:`NumberRenderer.bind(spriteId, style)` → `setValue(spriteId, 70)`,样式取 `EQW_Layout.NUM_STYLE.CALL_SCORE`(§6.8)。
|
||||
> **2026-08-26 补充(档位分数的实现方式,务必照做)**:14 档里 **13 档是两位数**(70…10),而每档只有**一个**分数精灵——这是**对的**,不要拆成十位/个位两个精灵。
|
||||
> 显示走平台既有接口 `SpriteManager.setNumberImage(spriteId, '70', charWidth)`:整串文本交给一个多帧图片精灵,引擎按字符逐帧渲染,精灵宽度按**字符数 × `charWidth`** 自动调整。
|
||||
> **不要用 `setFrame` 逐位切**——`setFrame` 是"整个精灵显示第 N 帧",一次只能显示一位,用它做多位数必然要拆精灵。
|
||||
> 资源 `NUM_CALL_SCORE` 须按 §3.6 的 **16 帧固定帧序**出图;`charWidth` 取 `EQW_Layout.NUM_STYLE.CALL_SCORE.charWidth`(§6.8,业务代码不写裸值)。
|
||||
- 可选性规则(design §4.2,**由服务端权威 `currcall` 决定,前端只据其置灰、不自行推导规则**):
|
||||
- 暂定庄家首叫:5–70 全部可选,**无 `不叫`**;
|
||||
- 其后:只有**严格低于 `currcall`** 的档位可选,`不叫` 可选。
|
||||
@@ -586,11 +586,11 @@ EQW_RoomOptions = {
|
||||
|
||||
> **2026-08-26 修订(其一)**:美术侧实际出图方式与原规格不符——花色按钮改为**一张图 5 帧**(帧1–4=四花色按钮,每帧已含按钮底+花色图标+右上角蓝色角标底;帧5=投降按钮,已含按钮底+「投降」字),花色图标、角标底、投降文字不再单独出精灵。按此改写以下条目,代码同步见 `ImageResources.js`/`Sprites_Action.js`/`Layout_Action.js`。
|
||||
>
|
||||
> **2026-08-26 修订(其二)**:张数数字改为**图集叠绘**(§3.6)——一个精灵就能画完两位数,故**每花色一个数字精灵**(`MAIN_SUIT_COUNT_1..4` = 1674–1677),当日早前定的「十位/个位各一个精灵」(8 个)作废,空出的 1678–1681 不复用。
|
||||
> **2026-08-26 修订(其二)**:张数数字用平台既有的 `SpriteManager.setNumberImage`(§3.6)——一个精灵就能显示整串 `26张`,故**每花色一个数字精灵**(`MAIN_SUIT_COUNT_1..4` = 1674–1677);当日早前定的「十位/个位各一个精灵」(8 个)**作废**,空出的 1678–1681 不复用。
|
||||
|
||||
- 标题斜角条:`亮主` 金色字 + 倒计时数字。
|
||||
- **4 个花色按钮**:每个按钮由**一个精灵**呈现,帧 = 花色序号 1–4(服务端 flower 编号),该帧已含「按钮底 + 花色图标 + 右上角蓝色角标底」;角标底之上叠加一个**对数文字精灵**(`N对`)。
|
||||
- 按钮下方叠加**张数数字精灵**:该花色在庄家手中的**总张数**——两副牌单花色最多 26 张(两位数),用**图集叠绘**在**一个**精灵上画完(`NumberRenderer`,无需拆十位/个位),资源见 §3.6 的 `NUM_MAIN_SUIT_COUNT`、样式见 §6.8 的 `NUM_STYLE.MAIN_SUIT_COUNT`
|
||||
- 按钮下方叠加**张数数字精灵**:该花色在庄家手中的**总张数**——两副牌单花色最多 26 张(两位数),用 `SpriteManager.setNumberImage(spriteId, '26张', charWidth)` 在**一个**精灵上显示整串(无需拆十位/个位),资源见 §3.6 的 `NUM_MAIN_SUIT_COUNT`(第16帧=`张`)、`charWidth` 见 §6.8 的 `NUM_STYLE.MAIN_SUIT_COUNT`
|
||||
- 右上角标文字 = 该花色的**对子数**(design §4/§11 明确要求)
|
||||
- **张数与对子数都由前端据 `MyCards`/`cards` 自行统计**,协议 §「ChooseMain」明确「服务端不额外下发」。
|
||||
- **投降按钮**:仅 `touxiang === 1`(即叫分 70)时显示,与 4 个花色按钮并列;按钮为**一个精灵**(`BTN_SUIT_CHOOSE` 帧5,已含底与「投降」字),不再单独出文字精灵。
|
||||
@@ -1175,24 +1175,30 @@ y≈648–720 深色条。左侧头像/昵称/分数由平台渲染(§0.2)
|
||||
|
||||
### 3.6 数字与符号
|
||||
|
||||
> **2026-08-26 修订(重要,出图方式变更)**:数字类资源 631/632/633/635/636 **不再是编辑器里配好帧数的多帧资源**,改为**等宽连续排列的一张图**——所有字符横向排成一行、每格等宽、格间不留缝。
|
||||
> 缘由:多帧图片精灵靠 `setFrame` 切帧,**一个精灵一次只显示一帧=只能显示一位数**;两位数就得两个精灵(十位/个位),精灵数迅速膨胀,而 `CALL_BTN_NUM_1..14` 每档只有一个精灵、14 档里 13 档是两位数,**按多帧方案根本渲染不出来**。
|
||||
> 新方案是**图集叠绘**:在精灵的绘制回调里按字宽裁源矩形,第 `idx` 格的源矩形 = `(idx × 单字宽, 0, 单字宽, 单字高)`,逐位画在**同一个**精灵上,于是**一个多位数只用一个精灵**。实现见框架 `gameabc-framework/ui/NumberRenderer.js`(`bind` / `setValue` / `clear` / `unbind`)与 `SpriteManager.drawImageRegion`;三种显示机制的选用判据见前端文档 `02-渲染与UI组件体系.md`。
|
||||
> **样式(单字宽高 / 字间距 / 对齐 / 绘制区宽)在 `EQW_Layout.NUM_STYLE.*`(`LayoutConstants.js`)集中配置**,本表只记出图规格。
|
||||
> **2026-08-26 修订(重要,出图规范订正)**:数字类资源 631/632/633/635/636 一律出成 **16 帧、固定帧序 `0123456789.+-x/p`** 的多帧图片资源。
|
||||
> 缘由:平台的 `SpriteManager.setNumberImage(spriteId, text, charWidth)` 就是**为多位美术字数字准备的现成接口**——把整串文本设给**一个**多帧图片精灵,引擎按字符逐帧渲染,并按**字符数 × `charWidth`** 自动调整精灵宽度。所以**一个精灵就能显示一整串数字**:既不用拆十位/个位,也不用 `setFrame` 逐位切(`setFrame` 是"整个精灵显示第 N 帧",只适合状态/花色/牌面这类"选其一")。
|
||||
> 帧号由字符**直接换算**(`'0'–'9'` → 帧1–10,后缀字 → 帧16),因此帧序**不可重排、不可省略占位**;用不到的帧位也要按顺序留出来,否则帧号对不上、画面串位。
|
||||
> 三种显示机制的选用判据见前端文档 `02-渲染与UI组件体系.md`;`charWidth`/`charHeight` 等数值在 `EQW_Layout.NUM_STYLE.*`(`LayoutConstants.js`)集中配置,本表只记出图规格。
|
||||
|
||||
| ID | 键名 | 用途 | 字符排列(等宽连续一行) | 单字符尺寸 | 整图尺寸 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 631 | `NUM_COUNTDOWN` | 倒计时数字 | `0 1 2 3 4 5 6 7 8 9`(索引 0–9) | 44 × 60 | **440 × 60**(10 格) |
|
||||
| 635 | `NUM_CALL_SCORE` | **叫分档位的分数数字**(深棕描边美术字) | `0 1 2 3 4 5 6 7 8 9`(索引 0–9) | 30 × 40 | **300 × 40**(10 格) |
|
||||
| 632 | `NUM_RESULT_WIN` | 结算得分数字(赢,橙) | `0 1 2 3 4 5 6 7 8 9 + -`(索引 0–9 数字、10 = `+`、11 = `-`) | 46 × 62 | **552 × 62**(12 格) |
|
||||
| 633 | `NUM_RESULT_LOSE` | 结算得分数字(输,蓝) | 与 632 完全一致,仅配色不同 | 46 × 62 | **552 × 62**(12 格) |
|
||||
| 634 | `ANI_JUDGE` | **判定结果动画**(大光 / 小光 / 过庄 / 升N级 / 投降)——帧动画资源,播放参数进 `AnimationConfigs`【待设计 D-8】。**注意:这是帧动画,不属于本节的等宽数字图** | 待定 | 待定 | 待定 |
|
||||
| 636 | `NUM_MAIN_SUIT_COUNT` | **选主面板花色张数数字**(美术单独出图,字号配色与以上几套不同;**一个花色一个精灵**) | `0 1 2 3 4 5 6 7 8 9`(索引 0–9) | 24 × 32(估值) | **240 × 32**(10 格) |
|
||||
**固定帧序(所有 NUM_\* 通用)**:
|
||||
|
||||
> **出图要求**:字符必须**严格等宽对齐格子**(第 N 个字符的左边缘恰好在 `N × 单字宽`),否则裁出来的字会串位;格与格之间**不留间隙**,字间距由代码的 `spacing` 控制(可为负=重叠)。
|
||||
> **带描边/渐变的美术字用图集叠绘数字精灵**(倒计时、结算得分、叫分分数、选主张数),文字精灵做不出这种效果——631–636 都要出图。
|
||||
> **纯数据型小字用文字精灵**(`SpriteManager.setText`):叫分角标的子数(值域 2–15,随爬坡开关变)、`主N`/`对N` 角标、局数、亮牌统计等。
|
||||
> **2026-08-26 新增 636**:选主张数原计划走文字精灵,但美术侧单独出了一套数字图(字号配色不同于既有几套),且张数最多两位(两副牌单花色最多 26 张);同日改为图集叠绘后,**十位/个位不再拆两个精灵**,每花色一个精灵即可。
|
||||
| 帧 | 1–10 | 11 | 12 | 13 | 14 | 15 | 16 |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| 内容 | `0`–`9` | `.` | `+` | `-` | `x` | `/` | **可变后缀**(该套资源自己的后缀字:`分`/`倍`/`张`) |
|
||||
|
||||
| ID | 键名 | 用途 | 帧数 | 第 16 帧(后缀) | 单字符尺寸 | 整图尺寸 |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| 631 | `NUM_COUNTDOWN` | 倒计时数字 | **16** | **无后缀**(出空白占位) | 44 × 60 | **704 × 60**(16 × 44) |
|
||||
| 635 | `NUM_CALL_SCORE` | **叫分档位的分数数字**(深棕描边美术字) | **16** | 【**待美术与规则确认**】档位只显示分数数字;若日后要显示 `70分` 则此帧出 `分` | 30 × 40 | **480 × 40**(16 × 30) |
|
||||
| 632 | `NUM_RESULT_WIN` | 结算得分数字(赢,橙)——用到帧12 `+`、帧13 `-` | **16** | 【**待美术与规则确认**】结算大字目前只显示数字,也可能是 `分` | 46 × 62 | **736 × 62**(16 × 46) |
|
||||
| 633 | `NUM_RESULT_LOSE` | 结算得分数字(输,蓝) | **16** | 同 632(含待确认项),仅配色不同 | 46 × 62 | **736 × 62**(16 × 46) |
|
||||
| 634 | `ANI_JUDGE` | **判定结果动画**(大光 / 小光 / 过庄 / 升N级 / 投降)——帧动画资源,播放参数进 `AnimationConfigs`【待设计 D-8】。**注意:这是帧动画,不适用本节的 16 帧数字规范** | 待定 | —— | 待定 | 待定 |
|
||||
| 636 | `NUM_MAIN_SUIT_COUNT` | **选主面板花色张数数字**(美术单独出图,字号配色与以上几套不同;**一个花色一个精灵**) | **16** | **`张`**(显示形如 `26张`) | 24 × 32(估值) | **384 × 32**(16 × 24) |
|
||||
|
||||
> **出图要求**:16 帧**等宽**(后缀字与数字同宽,因为宽度按"字符数 × 单字宽"算);帧序严格照上表,用不到的帧位(如某些套的 `.` `x` `/`)**仍要占位**。
|
||||
> **带描边/渐变的美术字用多帧图数字精灵 + `setNumberImage`**(倒计时、结算得分、叫分分数、选主张数),文字精灵做不出这种效果——631–636 都要出图。
|
||||
> **纯数据型小字用文字精灵**(`SpriteManager.setText` / `setTextWithWidth`):叫分角标的子数(值域 2–15,随爬坡开关变)、`主N`/`对N` 角标、局数、亮牌统计等。
|
||||
> **2026-08-26 新增 636**:选主张数原计划走文字精灵,但美术侧单独出了一套数字图(字号配色不同于既有几套);同日一度定为「十位/个位各一个精灵」,**现已撤销**——`setNumberImage` 一个精灵就能显示 `26张`。
|
||||
|
||||
### 3.7 浮层与气泡
|
||||
|
||||
@@ -1321,7 +1327,7 @@ design 与协议均**未定义任何音效**。以下是按牌类游戏常规推
|
||||
| | 1601 | `CALL_HINT_BG` | 图片 | 提示条底 | `BAR_HINT_TOP` |
|
||||
| | 1602 | `CALL_HINT_TEXT` | 文字 | `70分坐庄才可投降` | —— |
|
||||
| | 1603–1616 | `CALL_BTN_1..14` | 图片 ×14 | 档位按钮底(**含角标底**,70…5) | `BTN_CALL_SCORE` 帧1–3 按档位位置固定 / 帧4 灰 |
|
||||
| | 1617–1630 | `CALL_BTN_NUM_1..14` | **图集叠绘数字精灵** ×14 | 档位分数(70…5),**一个精灵画完整两位数**(2026-08-26,见 §3.6) | `NUM_CALL_SCORE` + `NUM_STYLE.CALL_SCORE` |
|
||||
| | 1617–1630 | `CALL_BTN_NUM_1..14` | **多帧图数字精灵** ×14 | 档位分数(70…5),**一个精灵显示整串**(`setNumberImage`,两位数不拆精灵;2026-08-26,见 §1.3/§3.6) | `NUM_CALL_SCORE`(16 帧)+ `NUM_STYLE.CALL_SCORE.charWidth` |
|
||||
| | 1631–1644 | `CALL_BTN_BADGE_1..14` | **文字** ×14 | 该档 `multiple` 子数(`2子`…`15子`),随爬坡开关变 | —— |
|
||||
| | 1645 | `CALL_BTN_NONE` | 图片 | `不叫` | `BTN_NO_CALL` |
|
||||
| | 1646 | `CALL_BTN_NONE_TEXT` | 文字 | —— | —— |
|
||||
@@ -1329,10 +1335,10 @@ design 与协议均**未定义任何音效**。以下是按牌类游戏常规推
|
||||
| | 1651 | `MAIN_TITLE_TEXT` | 文字 | `亮主` | —— |
|
||||
| | 1652–1655 | `MAIN_SUIT_BTN_1..4` | 图片 ×4 | 花色按钮(**已含按钮底+花色图标+角标底**),帧=花色序1–4 | `BTN_SUIT_CHOOSE` 帧1–4 |
|
||||
| | 1668–1671 | `MAIN_SUIT_PAIR_TEXT_1..4` | 文字 ×4 | `N对`,叠在对应按钮角标底之上 | —— |
|
||||
| | 1674–1677 | `MAIN_SUIT_COUNT_1..4` | **图集叠绘数字精灵** ×4 | 该花色在庄家手中的**张数**(最多两位,**一个花色一个精灵**;2026-08-26 由十位/个位 8 个精灵改回 4 个,见 §3.6) | `NUM_MAIN_SUIT_COUNT` + `NUM_STYLE.MAIN_SUIT_COUNT` |
|
||||
| | 1674–1677 | `MAIN_SUIT_COUNT_1..4` | **多帧图数字精灵** ×4 | 该花色在庄家手中的**张数**,显示 `26张`(**一个花色一个精灵**,`setNumberImage`;2026-08-26 由十位/个位 8 个精灵改回 4 个,见 §3.6) | `NUM_MAIN_SUIT_COUNT`(16 帧,第16帧=`张`)+ `NUM_STYLE.MAIN_SUIT_COUNT.charWidth` |
|
||||
| | 1672 | `MAIN_BTN_SURRENDER` | 图片 | `投降`(**已含按钮底+文字**) | `BTN_SUIT_CHOOSE` 帧5 |
|
||||
| | ~~1656–1659 / 1660–1663 / 1664–1667 / 1673~~ | ~~`MAIN_SUIT_ICON_1..4` / 原 `MAIN_SUIT_COUNT_1..4`(文字精灵)/ `MAIN_SUIT_PAIR_BG_1..4` / `MAIN_BTN_SURRENDER_TEXT`~~ | —— | **不需要**:分别并入按钮帧、或改为上方 1674–1677 的数字精灵,空出的 ID 不复用 | —— |
|
||||
| | ~~1678–1681~~ | ~~`MAIN_SUIT_COUNT_3/4_TENS/ONES`~~ | —— | **不需要**(2026-08-26):改用图集叠绘后一个精灵就能画两位数,十位/个位拆分作废,空出的 4 个 ID 不复用 | —— |
|
||||
| | ~~1678–1681~~ | ~~`MAIN_SUIT_COUNT_3/4_TENS/ONES`~~ | —— | **不需要**(2026-08-26):`setNumberImage` 一个精灵就能显示整串,十位/个位拆分作废,空出的 4 个 ID 不复用 | —— |
|
||||
| **222** 埋牌操作条 | 1700 | `BURY_BTN_TIP` | 图片 | `提示` | `BTN_TIP` |
|
||||
| | 1701 | `BURY_BTN_TIP_TEXT` | 文字 | —— | —— |
|
||||
| | 1702 | `BURY_BTN_SUBMIT` | 图片 | `埋牌` | `BTN_BURY` 帧1可提交/帧2灰 |
|
||||
@@ -1716,20 +1722,21 @@ CARD_SIZE: {
|
||||
### 6.8 阶段操作区配置
|
||||
|
||||
> **2026-08-26 修订(其一)**:选主面板花色图标、对数角标底已并入按钮帧(见 §1.5/§3.3),对应布局节点删除。
|
||||
> **2026-08-26 修订(其二)**:数字改为图集叠绘(§3.6)后,一个多位数只占一个精灵——花色张数的「十位 / 个位」两个节点**合并为一个** `MAIN_SUIT_COUNT`;两个数字节点的 `w/h` 不再随位数变化,直接引用 `EQW_Layout.NUM_STYLE.*` 的 `width` / `charHeight`(SSOT:数值只在 `LayoutConstants.js` 定义一处,布局文件不再手抄)。
|
||||
> **2026-08-26 修订(其二)**:数字统一走 `SpriteManager.setNumberImage`(§3.6)后,一个多位数只占一个精灵——花色张数的「十位 / 个位」两个节点**合并为一个** `MAIN_SUIT_COUNT`。
|
||||
> 两个数字节点的 `h` 恒为单字高,直接引用 `EQW_Layout.NUM_STYLE.*.charHeight`(SSOT:数值只在 `LayoutConstants.js` 定义一处,布局文件不再手抄);`w` 则**留到运行时注入**——`setNumberImage` 会按「字符数 × `charWidth`」自动改精灵宽,位数变宽度就变。
|
||||
|
||||
| 部件 | kind | 参数(实测估值) |
|
||||
| --- | --- | --- |
|
||||
| 叫分 · 面板底 | `point` | `x:355 y:140 w:575 h:170` |
|
||||
| 叫分 · 提示条 | `point` | `x:470 y:100 w:345 h:33` |
|
||||
| **叫分 · 14 档按钮** | `grid` | `anchorX:640 anchorY:160 cols:7 rows:2 itemWidth:74 itemHeight:56 spacingX:7 spacingY:24 anchor:center fillOrder:row` |
|
||||
| 叫分 · 档位分数数字 | `attach` | `target:对应档位按钮, hAlign:center, vAlign:middle, offsetY:4, w:NUM_STYLE.CALL_SCORE.width(74), h:NUM_STYLE.CALL_SCORE.charHeight(40)` |
|
||||
| 叫分 · 档位分数数字 | `attach` | `target:对应档位按钮, hAlign:center, vAlign:middle, offsetY:4, h:NUM_STYLE.CALL_SCORE.charHeight(40)`;`w` 运行时注入(= 字符数 × 30,由 `setNumberImage` 自动设) |
|
||||
| 叫分 · 档位子数角标 | `attach` | `target:对应档位按钮, corner:topRight, offsetX:-30, offsetY:2` |
|
||||
| 叫分 · `不叫` 按钮 | `point` | `x:553 y:345 w:184 h:57` |
|
||||
| 叫分 · 自己叫分大字 | `point` | `x:570 y:320 w:140 h:70`,`textStyle{fontSize:52, align:center}` |
|
||||
| 选主 · 标题斜角条 | `point` | `x:330 y:315 w:425 h:50` |
|
||||
| **选主 · 4 花色 + 投降** | `line` | `direction:horizontal anchorX:330 anchorY:373 itemWidth:128 itemHeight:55 spacing:9 anchor:left`(共 5 项;投降不显示时只排 4 项,`anchor:left` 保证前 4 个位置不变) |
|
||||
| 选主 · 张数 | `attach` | `target:对应花色按钮, hAlign:center, vAlign:bottom, offsetY:-6, w:NUM_STYLE.MAIN_SUIT_COUNT.width(48), h:NUM_STYLE.MAIN_SUIT_COUNT.charHeight(32)`(一个花色一个精灵,两位数由叠绘逐位画) |
|
||||
| 选主 · 张数 | `attach` | `target:对应花色按钮, hAlign:center, vAlign:bottom, offsetY:-6, h:NUM_STYLE.MAIN_SUIT_COUNT.charHeight(32)`;`w` 运行时注入(`9张`=2 字符、`26张`=3 字符,宽度随之变)。一个花色一个精灵 |
|
||||
| 选主 · 对数角标文字 | `attach` | `target:对应花色按钮, corner:topRight, offsetX:-36, offsetY:2`(按钮帧内已含角标底,本节点只定位叠加文字) |
|
||||
| 埋牌 · 操作条 | `line` + `items` | `direction:horizontal anchorX:640 anchorY:165 itemHeight:63 spacing:45 anchor:center`,`items:[180,60,180]`(提示 / 倒计时 / 埋牌) |
|
||||
| 出牌 · 操作条 | `line` + `items` | `direction:horizontal anchorX:640 anchorY:345 itemHeight:55 spacing:35 anchor:center`,`items:[75,157]`(倒计时 / 出牌) |
|
||||
@@ -1737,17 +1744,20 @@ CARD_SIZE: {
|
||||
| 状态提示条 · 等待类 | `point` | `x:500 y:373 w:320 h:47`(§2.8) |
|
||||
| 状态提示条 · 即时反馈类 | `point` | `x:462 y:172 w:363 h:50`;另配 `toastDuration:1500` |
|
||||
|
||||
**数字样式配置 `EQW_Layout.NUM_STYLE`**(2026-08-26 新增,在 `LayoutConstants.js`,与 `CARD_SIZE`/`TEXT_STYLE` 并列)——图集叠绘数字的**唯一数值出处**,业务代码不许内联这些值:
|
||||
**多帧图数字样式配置 `EQW_Layout.NUM_STYLE`**(2026-08-26 新增,在 `LayoutConstants.js`,与 `CARD_SIZE`/`TEXT_STYLE` 并列)——`setNumberImage` 所需数值的**唯一出处**,业务代码不许内联:
|
||||
|
||||
| 键 | `res`(资源键名) | `charWidth × charHeight` | `spacing` | `align` | `width`(绘制区宽) | 说明 |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| `COUNTDOWN` | `NUM_COUNTDOWN` | 44 × 60 | 0 | center | 88 | 秒数最多两位 |
|
||||
| `RESULT_WIN` | `NUM_RESULT_WIN` | 46 × 62 | 0 | center | 230 | 符号 + 最多四位 |
|
||||
| `RESULT_LOSE` | `NUM_RESULT_LOSE` | 46 × 62 | 0 | center | 230 | 同上,仅配色不同 |
|
||||
| `CALL_SCORE` | `NUM_CALL_SCORE` | 30 × 40 | 0 | center | 74 | = 档位按钮宽,居中压在按钮上 |
|
||||
| `MAIN_SUIT_COUNT` | `NUM_MAIN_SUIT_COUNT` | 24 × 32 | 0 | center | 48 | 单花色最多 26 张 |
|
||||
| 键 | `res`(资源键名) | `charWidth` | `charHeight` | `suffix`(第16帧后缀) | 典型显示 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| `COUNTDOWN` | `NUM_COUNTDOWN` | 44 | 60 | `''`(无) | `15` |
|
||||
| `RESULT_WIN` | `NUM_RESULT_WIN` | 46 | 62 | `''`(第16帧待确认) | `+120` |
|
||||
| `RESULT_LOSE` | `NUM_RESULT_LOSE` | 46 | 62 | `''`(同上) | `-120` |
|
||||
| `CALL_SCORE` | `NUM_CALL_SCORE` | 30 | 40 | `''`(第16帧待确认) | `70` |
|
||||
| `MAIN_SUIT_COUNT` | `NUM_MAIN_SUIT_COUNT` | 24 | 32 | `张` | `26张` |
|
||||
|
||||
> `res` 存的是**资源键名**而非 ID(与 `CARD_SIZE.res` 同一约定):布局文件是纯数据、不引用其他模块,调用方用 `EQW_Images[style.res]` 取真实 ID 再传给 `NumberRenderer.bind`。
|
||||
> - `charWidth` 是 `setNumberImage` 的入参,**精灵宽度 = 字符数 × `charWidth`**(该接口自动设),所以布局节点的 `w` 是运行时值、不写死在配置里。
|
||||
> - `charHeight` 供布局节点定 `h`(`setNumberImage` 不改高度)。
|
||||
> - `suffix` 只能是 `''` / `分` / `倍` / `张`——接口内部把这三个字统一编码到第 16 帧,写别的字不会被识别。
|
||||
> - `res` 存的是**资源键名**而非 ID(与 `CARD_SIZE.res` 同一约定):布局文件是纯数据、不引用其他模块,调用方用 `EQW_Images[style.res]` 取真实 ID。
|
||||
|
||||
### 6.9 结算区配置
|
||||
|
||||
|
||||
Reference in New Issue
Block a user