对照表:补上'操作类'API(加插槽/加附件/加骨骼/不重名/撤销/名称输入面板/Actor 几何),全部来自热更实测

这次任务(不重启,纯编辑器自身 API:按钮→名称面板→按名字匹配附件→当前选中骨骼下建 15 根骨骼,每根 1 插槽 1 附件)
用到的 API 全部落表,含踩坑:
- ADD_SLOT 会把模板插槽连它自带的附件一起复制('插槽上的附件变换没改'就是这个)
- xl.D(dt) 不会把对话框挂进 Stage,必须再 dt.D(dl)V(Stage.addActor)
- dl.b_()Z=remove 与 eX.b_()V=invalidate 同名不同描述符,按名字取会删不掉
- et(Table) 也声明 int L()/I(),按名字取 Actor 几何必须按返回类型 float 过滤
- iz 枚举顺序 normal/additive/multiply/screen 取自 clinit
- un.Z()=撤销(实测栈 23->22、对象数回退)
names.tsv 合并成 332 条,payload-named.zip 已重新产出(5605 处引用)
This commit is contained in:
tianmo committed 2026-10-16 19:26:25 +08:00
1 parent b8e84c7aa5
commit 42b40f6f65
3 files changed
+189

No files matched your search

+92
View File
@@ -246,3 +246,95 @@ GD D F position
GD V F spacing
GD S F rotateMix
GD L F translateMix
# ============================================================================
# 【面板/新按钮用到的"操作类" API】(2026-10-16 热更实测通过:不重启、纯编辑器自身 API)
# 场景:点面板按钮 → 弹名称输入面板 → 按名字匹配附件 → 在当前选中骨骼下建 15 根骨骼,
# 每根 1 插槽 1 附件(输入的附件名),位移 xy 0~500 随机、缩放 1、旋转/斜切 0,
# 插槽 alpha 0.5~1 随机、blend normal/additive 随机、附件在插槽上变换 0/0/0/1/1。
# 证据:`javap -p -c` 字节码 + attach 到运行进程逐条实测(每个 API 都真跑过并核对过结果)。
# ============================================================================
# ---- 建对象(编辑器自己的"加"API)----
# UH = OG 的模型编辑助手(OG.D:LUH;)。下面两个都实测建出来过:
UH D (LGU;LGp;Z;LfI;)LGU; addSlot
# ^ 加插槽:参数(插槽模板, 父骨骼, ?, 不重名用列表)。⚠️ 它会把模板插槽**整个复制**,连模板插槽上挂的附件一起复制(实测踩到过)
UH D (LGn;LGU;ZZLfI;)LGn; addAttachmentCopy
# ^ 加附件:参数(附件模板, 插槽, ?, ?, 列表);内部就是 `Gn.D(LGP;)LGn;` 复制一份模板附件,并挂到该插槽
GP D (LGp;)V addBone
# ^ 加骨骼:字节码 `bone.B = array.size; array.add(bone)`(骨架的骨骼表)
OG D (Ljava/lang/String;LfI;LGU;)Ljava/lang/String; uniqueName
# ^ 编辑器自己的不重名生成器:`OG.D("bone", 骨骼数组, null)` 会给出 bone7 这种名字
GU D (LGn;Z)V setAttachment
# ^ 设插槽的当前附件:第二参=是否记撤销;内部按 `Editor.V`(animate/setup)只写 `D:LGn;` 或 `B:LGn;` 其中一个 ——
# 所以要"两种模式都覆盖"就直接写两个字段(本次就是这么做的)
GU D LGn; attachmentAnimate
# ^ 与 `GU.B:LGn;` 成对:`D` 是 animate 模式用的当前附件,`B` 是 setup/非 animate 用的(JSON 导出器读的是 B)
VZ D (LGP;ZZ)V refresh
# ^ 改完模型重建层级树节点(本次每批建完都调它)
un D ()V undoBegin
un B ()V undoCommit
# ^ 撤销帧的 开始/提交(改模型前 D()、改完 B())
un Z ()V undo
# ^ ★ 撤销一步:实测有效(`up.D:` 栈 23→22、redo 栈 0→1,场景对象数同步回退)。
# 本次误删骨骼后就是用连点 un.Z() 一键一键撤回来的。另外 un.S()/un.C()/un.V()/un.I() 不是撤销:
# S=跳到历史某下标、C=置标志、V=按当前下标重放、I=up.D()(无效果)
# ---- 名称输入面板(编辑器自带的那套对话框)----
xl L (Ljava/lang/Object;)V onOkCancel
# ^ 对话框的 OK/Cancel 总回调:收到 Boolean(TRUE=OK、FALSE=Cancel)。
# OK 时它会读名字框、去重校验,然后调下面的抽象方法;Cancel 直接 return
xl L (Ljava/lang/String;)V onNameEntered
# ^ **抽象方法**:OK 且名字合法时被调用,参数就是输入的名字。想拿名字就子类化它(本次是 ASM 现生成子类)
xl D (Ldt;)LvH; show
# ^ 显示对话框。⚠️ 实测:**光调它窗口不会挂进 Stage**(parent 一直 null、屏幕上什么都不出现),
# 必须再显式 `dt.D(Ldl;)V`(Stage.addActor)挂上去,然后自己 setPosition
xl D LKp; nameField
# ^ 对话框里的名字输入框(Kp = TextField 子类):构造时会用它填入默认名,OK 时从它读名字
vH B (Ljava/lang/Object;)V okPressed
# ^ OK 按钮的回调:唯一会去调 `L(Object)` 的地方(javap -c vH 可见)
vH L (Ljava/lang/Object;)V onOkCancelNoop
# ^ 空实现(xl 覆盖了它)
Kp B ()Ljava/lang/String; getText
Kp B (Ljava/lang/String;)V setText
# ^ 名字框取/填文字(xl/xp 的构造与 L(Object) 里就是这么用的)
# ---- Actor / Stage / WidgetGroup(定位、挂载、删除)----
dt D (Ldl;)V addActor
# ^ Stage.addActor:字节码就是 `this.D:Ldo;.addActor(actor)`(root.addActor)。
# ⚠️ 用它把对话框挂上屏幕(配合 xl.D(dt));也踩过坑:它会把 Actor 从原父级摘走(当年把面板列表搬出面板就是它)
dl D Ldo; parent
dl D Ldt; stage
# ^ Actor 上的两个同名字段:`do` 类型的是父控件,`dt` 类型的是所在 Stage。按类型取,别按名字取
dl D ()Ldt; getStage
dl b_ ()Z remove
# ^ 把 Actor 从父级摘掉。⚠️ `eX.b_()V`(invalidate)与它同名不同描述符 —— `getMethod("b_")` 会取到 void 那个,
# 结果就是"调了删除却没删掉"(本次踩到)
eX b_ ()V invalidate
eX V (Z)V setFillParent
dl c_ ()F getX
dl d_ ()F getY
dl L ()F getWidth
dl I ()F getHeight
dl S ()F getTop
dl C ()F getRight
# ^ Actor 的几何读取(都在 dl 上用 `javap -p -c` 对出来的:c_=x、d_=y、L=width、I=height、S=y+h、C=x+w)。
# ⚠️ `et`(Table) 自己还声明了 `int L()`/`int I()`(列数/行数),所以按名字取必须**同时按返回类型 float 过滤**
dl D (FFI)V setPosition
# ^ setPosition(x, y, alignment):**align=0 时是"以 (x,y) 为中心"**(b1 不是 left/right 就按 center 处理)。
# 本次要把对话框摆屏幕正中就是靠这个:直接传 Stage 中心即可
# ---- 混合模式枚举(插槽 blend)----
iz D Liz; normal
iz B Liz; additive
iz L Liz; multiply
iz I Liz; screen
# ^ `iz`(=BlendMode) 的常量顺序取自 `iz.<clinit>`:依次 new iz("normal",0,770,1,771)、("additive",1,770,1,1)、
# ("multiply",2,774,774,771)、("screen",3,1,1,769) —— 名字是常量池里的明文
# ---- 面板自己那套(本次复用的)----
com.spineview.ObjectPanel wire (Ljava/lang/ClassLoader;Ljava/lang/Object;Ljava/lang/Runnable;)V wireButton
# ^ 把按钮接上点击(轮询 isChecked + 路由线程)——新按钮直接复用它,不用自己写监听
com.spineview.SceneObjects listAllNodes (Ljava/lang/ClassLoader;)Ljava/util/List; listAllNodes
com.spineview.SceneActions delete (Ljava/lang/ClassLoader;Ljava/lang/Object;)Z delete
# ^ 面板自己的"罗列场景对象 / 删除对象"(走编辑器删除流程,自带撤销)——清理误建对象时用它
Can't render this file because it contains an unexpected character in line 41 and column 97.
+35
View File
@@ -24,11 +24,14 @@ GO I F scaleY
GO L F scaleX
GO S F rotation
GO Z F height
GP D (LGp;)V addBone
GP L (LGn;ZZ)V removeAttachment
GP L LfI attachments
GP Z LfI slots
GU B LGn; attachment
GU B Lcom/badlogic/gdx/graphics/Color; color
GU D (LGn;Z)V setAttachment
GU D LGn; attachmentAnimate
GU D LGp; bone
GU D Liz; blend
GU D Ljava/lang/String; name
@@ -99,6 +102,15 @@ KP B ()Ljava/lang/String; getSelected
KP B (I)V setSelectedIndex
KP B (Ljava/lang/String;)V setSelected
KP D (Ldt;)V setStage
Kp B ()Ljava/lang/String; getText
Kp B (Ljava/lang/String;)V setText
OG D (Ljava/lang/String;LfI;LGU;)Ljava/lang/String; uniqueName
UH D (LGU;LGp;Z;LfI;)LGU; addSlot
UH D (LGn;LGU;ZZLfI;)LGn; addAttachmentCopy
VZ D (LGP;ZZ)V refresh
com.spineview.ObjectPanel wire (Ljava/lang/ClassLoader;Ljava/lang/Object;Ljava/lang/Runnable;)V wireButton
com.spineview.SceneActions delete (Ljava/lang/ClassLoader;Ljava/lang/Object;)Z delete
com.spineview.SceneObjects listAllNodes (Ljava/lang/ClassLoader;)Ljava/util/List; listAllNodes
com/badlogic/gdx/scenes/scene2d/ui/Button B (ZZ)V setCheckedAndFire
com/badlogic/gdx/scenes/scene2d/ui/Button I (Z)V setChecked
com/badlogic/gdx/scenes/scene2d/ui/Button String ()Z isChecked
@@ -186,8 +198,10 @@ dl B (I)F getY
dl B (Lde;)Lde; stageToLocalCoordinates
dl B (Ldl;Lde;)Lde; localToActorCoordinates
dl B (Z)V setDebug
dl C ()F getRight
dl C (FF)V setOrigin
dl D ()Ldl; debug
dl D ()Ldt; getStage
dl D ()Ljava/lang/Object; getUserObject
dl D ()Ljava/lang/String; getName
dl D ()V clearActions
@@ -203,17 +217,24 @@ dl D (Ldn;)Z addListener
dl D (Ljava/lang/Object;)V setUserObject
dl D (Ljava/lang/String;)V setName
dl D (Z)V setVisible
dl D Ldo; parent
dl D Ldt; stage
dl F ()V clipEnd
dl I ()F getHeight
dl I ()Z isTouchable
dl L ()F getWidth
dl L ()V clear
dl L ()Z hasParent
dl L (Ldn;)Z addCaptureListener
dl L (Ldv;)V setTouchable
dl S ()F getTop
dl S (FF)V setOrigin
dl S (Lde;)Lde; localToStageCoordinates
dl V ()V toBack
dl Z ()V toFront
dl b_ ()Z remove
dl c_ ()F getX
dl d_ ()F getY
do B ()Ldo; debugAll
do Code ()V childrenChanged
do D (F)V act
@@ -234,6 +255,7 @@ do LineNumberTable ()Z isTransform
do init ()Z hasChildren
dt B ()F getHeight
dt D ()F getWidth
dt D (Ldl;)V addActor
eM C ()V expandTo
eM D ()F getHeight
eM D ()Z hasChildren
@@ -297,3 +319,16 @@ fI D ([Ljava/lang/Object;)LfI; with
fI D ([Ljava/lang/Object;)V addAll
fI L ()Ljava/lang/Object; first
fI L ()V reverse
iz B Liz; additive
iz D Liz; normal
iz I Liz; screen
iz L Liz; multiply
un B ()V undoCommit
un D ()V undoBegin
un Z ()V undo
vH B (Ljava/lang/Object;)V okPressed
vH L (Ljava/lang/Object;)V onOkCancelNoop
xl D (Ldt;)LvH; show
xl D LKp; nameField
xl L (Ljava/lang/Object;)V onOkCancel
xl L (Ljava/lang/String;)V onNameEntered
1 # 合并后的名字映射表:确定(=)指纹 + 手动/实测锚点
24 GO
25 GO
26 GO
27 GP
28 GP
29 GP
30 GP
31 GU
32 GU
33 GU
34 GU
35 GU
36 GU
37 GU
102 KP
103 KP
104 KP
105 Kp
106 Kp
107 OG
108 UH
109 UH
110 VZ
111 com.spineview.ObjectPanel
112 com.spineview.SceneActions
113 com.spineview.SceneObjects
114 com/badlogic/gdx/scenes/scene2d/ui/Button
115 com/badlogic/gdx/scenes/scene2d/ui/Button
116 com/badlogic/gdx/scenes/scene2d/ui/Button
198 dl
199 dl
200 dl
201 dl
202 dl
203 dl
204 dl
205 dl
206 dl
207 dl
217 dl
218 dl
219 dl
220 dl
221 dl
222 dl
223 dl
224 dl
225 dl
226 dl
227 dl
228 dl
229 dl
230 dl
231 dl
232 dl
233 dl
234 dl
235 dl
236 dl
237 dl
238 do
239 do
240 do
255 do
256 dt
257 dt
258 dt
259 eM
260 eM
261 eM
319 fI
320 fI
321 fI
322 iz
323 iz
324 iz
325 iz
326 un
327 un
328 un
329 vH
330 vH
331 xl
332 xl
333 xl
334 xl