本页面由葡萄牙语机器翻译,可能存在错误。葡萄牙语版本为准。
分层架构
要理解 CrossFly 的任何部分,先掌握整体地图会很有帮助。本质上,CrossFly 就是一个 libGDX 的
ApplicationListener —— libGDX 通过这个单一入口来创建、调整大小并渲染应用。围绕这一点,框架被
组织成若干层。
每一层各做什么
- app —— 你的代码:
Window的子类(屏幕)、组件、业务规则。这是你日常工作的地方。 - ui —— UI 库:一切都派生自
Component(widgets、容器、样式、布局)。 参见 一切都是 Component。 - core / kernel —— 将应用连接到外部世界:
Main(即ApplicationListener)负责启动引导, 分发输入、触发生命周期并加载设备配置。参见 生命周期。 - gl —— 将高层绘制(
Paint)翻译成 OpenGL 的 draw calls,每个图元对应一个 渲染器。参见 渲染管线。 - serviços —— SQLite、device、map 等:独立于 UI 的模块,由 app 按需使用。
为什么这种分层很重要
- 你几乎总是在
ui层编程(通过组合Component)。下层是实现 细节 —— 你很少会碰gl,也很少直接与 libGDX 打交道。 - 框架在paint thread 上是单线程的(参见 paint thread):
Main始终在该线程上调用create()/render()/resize(),所有 UI 都发生在其中。 - 服务不依赖 UI —— 你可以不搭建任何界面就使用 SQLite 或 device,而 UI 在你调用这些模块之前 也“不知道”它们的存在。
高层次的控制流
- libGDX 创建
Main并在 paint thread 上调用create()。 Main完成启动引导(平台、运行时、配置),并通过反射实例化主窗口, 调用其onShow()。- 每一帧,libGDX 都会调用
render();EventsProcessor绘制窗口栈(栈顶 在最上层)—— 但只有在收到渲染请求时(repaint())才绘制,而非持续绘制。 - 输入和
resize通过Main的回调到达,始终在 paint thread 上。
这是思维导图,而非包目录。关于按层划分的包和类列表,请参见 技术参考。
参见
- 下一篇:一切都是 Component · 生命周期
这个页面有帮助吗?感谢你的反馈!