@xiacg/exia-fgui 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +173 -0
- package/dist/exia-fgui.cjs +2245 -0
- package/dist/exia-fgui.d.ts +430 -0
- package/dist/exia-fgui.min.cjs +1 -0
- package/dist/exia-fgui.min.mjs +1 -0
- package/dist/exia-fgui.mjs +2239 -0
- package/package.json +42 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 xiachenggang
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# exia-fgui
|
|
2
|
+
|
|
3
|
+
基于 FairyGUI 的 UI 管理系统,提供灵活的窗口管理和装饰器支持。
|
|
4
|
+
|
|
5
|
+
## 简介
|
|
6
|
+
|
|
7
|
+
`exia-fgui` 是基于 FairyGUI 的 UI 管理库,提供窗口生命周期管理、资源自动加载、多窗口组管理等功能。支持配套的可视化编辑器一键导出界面配置。
|
|
8
|
+
|
|
9
|
+
**核心特性**:
|
|
10
|
+
|
|
11
|
+
- 🎨 灵活的 UI 装饰器
|
|
12
|
+
- 🪟 完整的窗口生命周期管理
|
|
13
|
+
- 📦 自动资源加载和卸载
|
|
14
|
+
- 🎯 窗口间关系控制(隐藏/关闭前一个界面)
|
|
15
|
+
- 🎪 多窗口组管理
|
|
16
|
+
- 📊 Header 资源栏复用
|
|
17
|
+
- 🖥️ 配套可视化编辑器(付费插件)
|
|
18
|
+
|
|
19
|
+
**依赖**:
|
|
20
|
+
|
|
21
|
+
- FairyGUI - [官方文档](https://www.fairygui.com/docs/editor)
|
|
22
|
+
|
|
23
|
+
## 安装
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install @xiacg/exia-fgui
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 可视化编辑器
|
|
30
|
+
|
|
31
|
+
提供专业的 FairyGUI 配置编辑器,支持快速配置和导出。
|
|
32
|
+
|
|
33
|
+
**下载地址**:[cocos fgui editor plugin]()
|
|
34
|
+
|
|
35
|
+
## 使用说明
|
|
36
|
+
|
|
37
|
+
### UI 装饰器
|
|
38
|
+
|
|
39
|
+
使用装饰器简化 UI 组件定义和配置。
|
|
40
|
+
|
|
41
|
+
**窗口装饰器**:
|
|
42
|
+
|
|
43
|
+
- `@uiclass(groupName, pkgName, name, inlinePkgs?)` - 注册窗口类
|
|
44
|
+
- `groupName` - 窗口组名称
|
|
45
|
+
- `pkgName` - FairyGUI 包名
|
|
46
|
+
- `name` - 组件名(必须和类名相同)
|
|
47
|
+
- `inlinePkgs` - 内联的包名(可选,当前界面引用其他包资源时使用)
|
|
48
|
+
|
|
49
|
+
**Header 装饰器**:
|
|
50
|
+
|
|
51
|
+
- `@uiheader(pkgName, name)` - 注册 Header 类
|
|
52
|
+
- 用于定义窗口顶部资源栏
|
|
53
|
+
|
|
54
|
+
**UI 组件装饰器**:
|
|
55
|
+
|
|
56
|
+
- `@uicom(pkgName, name)` - 注册自定义 UI 组件类
|
|
57
|
+
|
|
58
|
+
**属性装饰器**:
|
|
59
|
+
|
|
60
|
+
- `@uiprop` - 标记 FairyGUI 组件属性(按钮、文本、列表等)
|
|
61
|
+
- `@uicontrol` - 标记 FairyGUI 控制器
|
|
62
|
+
- `@uitransition` - 标记 FairyGUI 动画
|
|
63
|
+
|
|
64
|
+
**事件装饰器**:
|
|
65
|
+
|
|
66
|
+
- `@uiclick` - 标记点击事件处理函数
|
|
67
|
+
|
|
68
|
+
### 窗口基类 (Window)
|
|
69
|
+
|
|
70
|
+
所有窗口的基类,提供完整的生命周期。
|
|
71
|
+
|
|
72
|
+
**生命周期方法**:
|
|
73
|
+
|
|
74
|
+
- `onInit()` - 窗口初始化
|
|
75
|
+
- `onShow(userdata?)` - 窗口显示
|
|
76
|
+
- `onHide()` - 窗口隐藏
|
|
77
|
+
- `onClose()` - 窗口关闭
|
|
78
|
+
- `onShowFromHide()` - 从隐藏状态恢复
|
|
79
|
+
- `onToTop()` - 窗口到顶层
|
|
80
|
+
- `onToBottom()` - 窗口到底层
|
|
81
|
+
- `onEmptyAreaClick()` - 点击空白区域
|
|
82
|
+
- `onAdapted()` - 窗口适配完成
|
|
83
|
+
|
|
84
|
+
### Header 基类 (Header)
|
|
85
|
+
|
|
86
|
+
窗口顶部资源栏基类,支持多窗口复用。
|
|
87
|
+
|
|
88
|
+
**生命周期方法**:
|
|
89
|
+
|
|
90
|
+
- `onInit()` - Header 初始化
|
|
91
|
+
- `onShow(userdata?)` - Header 显示
|
|
92
|
+
- `onHide()` - Header 隐藏
|
|
93
|
+
- `onClose()` - Header 关闭
|
|
94
|
+
- `onShowFromHide()` - 从隐藏状态恢复
|
|
95
|
+
- `onAdapted()` - 适配完成
|
|
96
|
+
|
|
97
|
+
### 窗口管理器 (WindowManager)
|
|
98
|
+
|
|
99
|
+
全局窗口管理器,负责窗口的创建、显示、关闭等。
|
|
100
|
+
|
|
101
|
+
**配置方法**:
|
|
102
|
+
|
|
103
|
+
- `setPackageCallbacks(callbacks)` - 设置 UI 包加载回调
|
|
104
|
+
- `callbacks.showWaitWindow` - 显示加载等待窗口
|
|
105
|
+
- `callbacks.hideWaitWindow` - 隐藏加载等待窗口
|
|
106
|
+
- `callbacks.fail` - 加载失败回调
|
|
107
|
+
- `addManualPackage(pkgName)` - 添加手动管理资源的包
|
|
108
|
+
- `setPackageInfo(pkgName, bundleName?, path?)` - 设置包所在的 bundle 和路径
|
|
109
|
+
- `setUIConfig(config)` - 设置 UI 导出数据
|
|
110
|
+
|
|
111
|
+
**窗口操作**:
|
|
112
|
+
|
|
113
|
+
- `showWindow<T>(windowClass, userdata?)` - 异步打开窗口(自动加载资源)
|
|
114
|
+
- 参数是窗口类(构造函数),非窗口名称
|
|
115
|
+
- `closeWindow<T>(windowClass)` - 关闭窗口(通过窗口类)
|
|
116
|
+
- `closeWindowByName(name)` - 关闭窗口(通过窗口名称)
|
|
117
|
+
- `getWindow<T>(name)` - 获取窗口实例
|
|
118
|
+
- `getTopWindow<T>(isAll?)` - 获取最顶层窗口
|
|
119
|
+
- `hasWindow(name)` - 检查窗口是否存在
|
|
120
|
+
|
|
121
|
+
**其他方法**:
|
|
122
|
+
|
|
123
|
+
- `getGroupNames()` - 获取所有窗口组名称
|
|
124
|
+
- `getWindowGroup(name)` - 获取指定窗口组
|
|
125
|
+
- `closeAllWindow(ignores?)` - 关闭所有窗口
|
|
126
|
+
- `releaseUnusedRes()` - 释放不再使用的 UI 资源
|
|
127
|
+
|
|
128
|
+
### 窗口类型 (WindowType)
|
|
129
|
+
|
|
130
|
+
定义窗口显示时对其他窗口的处理方式:
|
|
131
|
+
|
|
132
|
+
- `Normal` - 不做任何处理
|
|
133
|
+
- `CloseAll` - 关闭所有窗口
|
|
134
|
+
- `CloseOne` - 关闭上一个窗口
|
|
135
|
+
- `HideAll` - 隐藏所有窗口
|
|
136
|
+
- `HideOne` - 隐藏上一个窗口
|
|
137
|
+
|
|
138
|
+
### 适配类型 (AdapterType)
|
|
139
|
+
|
|
140
|
+
窗口适配类型:
|
|
141
|
+
|
|
142
|
+
- `Full` - 全屏适配(默认)
|
|
143
|
+
- `Bang` - 空出刘海区域
|
|
144
|
+
- `Fixed` - 固定尺寸,不适配
|
|
145
|
+
|
|
146
|
+
### 典型使用流程
|
|
147
|
+
|
|
148
|
+
1. **FairyGUI 设计** - 使用 FairyGUI 编辑器设计界面
|
|
149
|
+
2. **定义窗口类** - 继承 Window 并使用 @uiclass 装饰器注册
|
|
150
|
+
3. **配置属性和事件** - 使用 @uiprop 和 @uiclick 标记
|
|
151
|
+
4. **配置加载回调** - 调用 `WindowManager.setPackageCallbacks()`(可选)
|
|
152
|
+
5. **打开窗口** - 调用 `WindowManager.showWindow(MyWindow, userdata)`
|
|
153
|
+
6. **管理生命周期** - 实现窗口生命周期方法
|
|
154
|
+
|
|
155
|
+
详细 API 请查看 `exia-fgui.d.ts` 类型定义文件和 FairyGUI 官方文档。
|
|
156
|
+
|
|
157
|
+
## 依赖
|
|
158
|
+
|
|
159
|
+
- [FairyGUI](https://www.fairygui.com/) - UI 编辑器和运行时库
|
|
160
|
+
|
|
161
|
+
## 许可证
|
|
162
|
+
|
|
163
|
+
MIT License
|
|
164
|
+
|
|
165
|
+
## 作者
|
|
166
|
+
|
|
167
|
+
**exia** (xiacg)
|
|
168
|
+
**邮箱**: <xiacg@163.com>
|
|
169
|
+
|
|
170
|
+
## 源码仓库
|
|
171
|
+
|
|
172
|
+
- [GitHub](https://github.com/xiachenggang/exia-framework.git)
|
|
173
|
+
- [npm](https://www.npmjs.com/package/@xiacg/exia-fgui)
|