对照表:补 WidgetGroup 尺寸读取(min/pref/maxW/H) + 对话框显示不全/闪左下角的两个修正
- 弹窗建出来默认 150x150,正文和按钮被裁 → 显式设 width/height=max(pref,min,下限) 再 invalidate - '先左下角再跳中间' = addActor 后过一帧才居中;改成尺寸+居中在同一次渲染回调里做完 names.tsv 338 条,payload-named.zip 已重产(5617 处引用)
This commit is contained in:
1 parent
42b40f6f65
commit
f40979f965
3 files changed
+27
No files matched your search
@@ -338,3 +338,15 @@ com.spineview.ObjectPanel wire (Ljava/lang/ClassLoader;Ljava/lang/Object;Ljava/l
|
||||
com.spineview.SceneObjects listAllNodes (Ljava/lang/ClassLoader;)Ljava/util/List; listAllNodes
|
||||
com.spineview.SceneActions delete (Ljava/lang/ClassLoader;Ljava/lang/Object;)Z delete
|
||||
# ^ 面板自己的"罗列场景对象 / 删除对象"(走编辑器删除流程,自带撤销)——清理误建对象时用它
|
||||
|
||||
# ---- WidgetGroup 的尺寸读取(本次用来把对话框撑到合适大小)----
|
||||
eX LineNumberTable ()F getMinWidth
|
||||
eX String ()F getMinHeight
|
||||
eX StackMapTable ()F getPrefWidth
|
||||
eX init ()F getPrefHeight
|
||||
eX Ljava ()F getMaxWidth
|
||||
eX Class ()F getMaxHeight
|
||||
# ^ 六个 Layout 方法按 eX 声明顺序对应 minWidth/minHeight/prefWidth/prefHeight/maxWidth/maxHeight
|
||||
# (面板日志里一直用的 `init` 读出来就是 prefHeight;本次实测对话框 pref=399x166)
|
||||
# ^ ⚠️ 窗口刚建出来时的尺寸是默认的 150x150(所以正文/按钮会被裁),
|
||||
# 要显式 `Actor.width/height = max(pref, min, 下限)` + `eX.b_()V`(invalidate) 才会按 pref 撑开
|
||||
|
Can't render this file because it contains an unexpected character in line 41 and column 97.
|
@@ -262,11 +262,17 @@ eM D ()Z hasChildren
|
||||
eM D (Ljava/lang/Object;)LeM; findNode
|
||||
eM I ()V collapseAll
|
||||
eM S ()V expandAll
|
||||
eX Class ()F getMaxHeight
|
||||
eX D (LJ;F)V draw
|
||||
eX LineNumberTable ()F getMinWidth
|
||||
eX Ljava ()F getMaxWidth
|
||||
eX Object ()Z needsLayout
|
||||
eX StackMapTable ()F getPrefWidth
|
||||
eX StackMapTable ()V layout
|
||||
eX String ()F getMinHeight
|
||||
eX V (Z)V setFillParent
|
||||
eX b_ ()V invalidate
|
||||
eX init ()F getPrefHeight
|
||||
et B (Lca;)V drawDebugBounds
|
||||
et B (LeN;)Let; padTop
|
||||
et B (Z)V setDebug
|
||||
|
||||
|
@@ -522,3 +522,12 @@ macOS 文件系统大小写不敏感,解到目录里会互相覆盖 —— 所
|
||||
> 另外踩到两个**跟 API 无关但会浪费半天**的坑,记在这里:
|
||||
> 1) **HotSpot 同名 agent 类只加载一次** —— 改了 agent 代码再 attach 同一个类名,跑的还是旧代码;每次改代码都要换类名。
|
||||
> 2) 编辑器字体**没有中文字形**,对话框/按钮文字写中文会显示成乱码 —— 一律用英文。
|
||||
|
||||
### 对话框"显示不全 / 先闪左下角"的两个修正(2026-10-16 实测)
|
||||
|
||||
| 载荷签名 | 真名 | 依据 / 坑 |
|
||||
| --- | --- | --- |
|
||||
| `eX.StackMapTable()F` / `eX.init()F` | **getPrefWidth / getPrefHeight** | `eX`(WidgetGroup) 六个 Layout 方法按声明顺序 = minW/minH/prefW/prefH/maxW/maxH。实测对话框 pref=**399x166**,但窗口刚建出来时是默认 **150x150** → 正文和按钮被裁。修法:`Actor.width/height = max(pref, min, 下限)` 再 `eX.b_()V`(invalidate) |
|
||||
| `eX.LineNumberTable()F` / `eX.String()F` | **getMinWidth / getMinHeight** | 同上(对话框 min=302x166) |
|
||||
| `eX.b_()V` | **invalidate** | 让内容按新尺寸重新布局(和 `dl.b_()Z`=remove 同名不同描述符) |
|
||||
| `dl.D(FFI)V` | **setPosition(x,y,alignment)** | **align=0 → 以 (x,y) 为中心**。"先出现在左下角、再跳到中间"的原因就是:先 `addActor`(默认 (0,0))渲染了一帧,350ms 后才居中。修法:**尺寸 + 居中都在同一次渲染回调里做完**(本次实测 399x170 @ (1665.5,937) → 中心正好 (1865,1022) = 3730x2044 的正中) |
|
||||
Reference in new issue
Block a user