跳到内容
CrossFly 是 100% 开源在 GitHub 关注我们
CrossFlyCrossFly
开始使用

本页面由葡萄牙语机器翻译,可能存在错误。葡萄牙语版本为准。

项目剖析

在动手修改之前,先理解生成“骨架”的东西。

Gradle 模块

:core     → código compartilhado: suas Windows, componentes, lógica, dados
:lwjgl3   → launcher desktop
:android  → launcher Android
:ios      → launcher iOS (RoboVM)
:web      → launcher Web (TeaVM)

你几乎总是在 core 中编程。每个启动器只做操作系统的 bootstrap —— 实例化 Main 并配置窗口(见 平台)。

MainWindow 如何解析

Main 通过反射实例化主窗口:

  1. 使用 cmdline["classname"] 中指定的类(由启动器传入);或者
  2. 在缺失该值时,使用被重写的 getMainWindow()。

要求:该类需要一个公共的无参构造函数(它是通过反射实例化的)。

完整示例(复制、粘贴、运行)

最小且可执行的 MainWindow 类,带有反射所要求的无参构造函数:

package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;

public class MainWindow extends Window
{
   public MainWindow() { }          // 无参构造函数(反射所必需)

   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());
      add(LAY_AUTO, new Label("MainWindow resolvida por classname"));
   }
}

建议的应用组织方式

在 core 内,一个可扩展的结构(见 应用架构):

app/
 ├─ ui/screens/      → suas Windows (uma tela = uma Window)
 ├─ ui/components/   → componentes reutilizáveis
 ├─ data/            → repositórios (SQLite, rede)
 └─ model/           → objetos de domínio

资源与字体

基础字体(Roboto、FontAwesome、Material)在 bootstrap 时加载;你的资源(图片、 数据)放在项目的资源目录中,并通过路径读取(见 图片)。

下一步

→ CrossFly 全景导览

另请参阅

这个页面有帮助吗?