zircon – 用户友好的瓷砖引擎和文本GUI
需要信息吗?检查文档|或创建问题|检查我们的项目委员会|在和不和谐|在Patreon上支持我们| Javadoc / kdoc
目录
入门
如果您想开始与zircon合作,则可以将其作为Maven依赖性添加到您的项目中,也可以尝试随附的电池附带的Skeleton Projects(Java,Kotlin)。
官方文档网站包含大量信息。这些示例还记录在zircon示例页面(正在施工中) ,最佳起点是zircon速成课程。
如果您喜欢通过从这里查看zircon的来源来学习,则可以自己运行示例。如果您使用的是Java ,请在此处开始。另外,如果您使用Kotlin,则可以在此处找到代码。
如果您只想仔细阅读zircon API在此处导航。所有旨在成为公共API一部分的一切都在那里。
您可以在这里找到Javadoc / KDoc
如果您想与我们交谈,请加入我们的Discord服务器。
将zircon作为Maven依赖性
马文:
zircon</groupId>
<artifactId> zircon .core-jvm</artifactId>
<version>2021.1.0-RELEASE</version>
</dependency>
<!– use zircon .jvm.libgdx if you want to use LibGDX instead of Swing –>
<dependency>
<groupId>org.hexworks. zircon </groupId>
<artifactId> zircon .jvm.swing</artifactId>
<version>2021.1.0-RELEASE</version>
</dependency>
</dependencies>\”>
< dependencies > < dependency > < groupId >org.hexworks. zircon </ groupId > < artifactId > zircon .core-jvm</ artifactId > < version >2021.1.0-RELEASE</ version > </ dependency > <!-- use zircon .jvm.libgdx if you want to use LibGDX instead of Swing --> < dependency > < groupId >org.hexworks. zircon </ groupId > < artifactId > zircon .jvm.swing</ artifactId > < version >2021.1.0-RELEASE</ version > </ dependency > </ dependencies >
Gradle:
zircon .core-jvm:2021.1.0-RELEASE"
implementation "org.hexworks. zircon : zircon .jvm.swing:2021.1.0-RELEASE"
}\”>
dependencies {
implementation \" org.hexworks. zircon : zircon .core-jvm:2021.1.0-RELEASE \"
implementation \" org.hexworks. zircon : zircon .jvm.swing:2021.1.0-RELEASE \"
}
基本用法
设置依赖关系后,您可以通过创建一个TileGrid开始使用zircon :
zircon
.withDefaultTileset(CP437TilesetResources.rexPaint16x16())
.build());
// A Screen is an abstraction that lets you use text GUI Components
// You can have multiple Screens attached to the same TileGrid to be able to create multiple
// screens for your app.
Screen screen = Screen.create(tileGrid);
// Creating text GUI Components is super simple
Label label = Components.label()
.withText("Hello, zircon !")
.withAlignment(ComponentAlignments.alignmentWithin(tileGrid, ComponentAlignment.CENTER))
.build();
// Screens can hold GUI components
screen.addComponent(label);
// Displaying a screen will make it visible. It will also hide a previously shown Screen.
screen.display();
// zircon comes with a plethora of built-in color themes
screen.setTheme(ColorThemes.arc());
}
}\”>
public class Main { public static void main ( String [] args ) { // a TileGrid represents a 2D grid composed of Tiles TileGrid tileGrid = SwingApplications . startTileGrid ( AppConfig . newBuilder () // The number of tiles horizontally, and vertically . withSize ( 60 , 30 ) // You can choose from a wide array of CP437, True Type or Graphical tilesets // that are built into zircon . withDefaultTileset ( CP437TilesetResources . rexPaint16x16 ()) . build ()); // A Screen is an abstraction that lets you use text GUI Components // You can have multiple Screens attached to the same TileGrid to be able to create multiple // screens for your app. Screen screen = Screen . create ( tileGrid ); // Creating text GUI Components is super simple Label label = Components . label () . withText ( \"Hello, zircon !\" ) . withAlignment ( ComponentAlignments . alignmentWithin ( tileGrid , ComponentAlignment . CENTER )) . build (); // Screens can hold GUI components screen . addComponent ( label ); // Displaying a screen will make it visible. It will also hide a previously shown Screen. screen . display (); // zircon comes with a plethora of built-in color themes screen . setTheme ( ColorThemes . arc ()); } }
此示例的输出是:
恭喜!现在您是zircon用户。
最佳实践
以下是一些指导方针,如果您被卡住,可以为您提供帮助:
如果您想构建某些东西( TileGraphics , Component或公共API一部分的任何内容),几乎可以确定有一个Builder或工厂对象。每个具有构建器的类型都将具有一个newBuilder函数,您可以调用以创建相应的构建器: Tile.newBuilder() 。
如果可以创建多种对象类别,则可能还会有一个实用程序类,例如Shapes来创建不同的Shape对象。您的IDE将为您提供帮助。
这些类位于org.hexworks. zircon .api软件包。但是,有些类将组合在一起分为单个公用事业类。例如,使用Components ,您可以为所有Component s(例如Components.panel()或Components.checkBox()获得Builder s。同样,您可以使用DrawSurfaces来获取用于TileGraphics和TileImage构建器。
如果您想使用诸如瓷砖或rexpaint文件之类的外部文件,请检查同一软件包( org.hexworks. zircon .api ),并查找以*Resources结尾的类。例如,您可以选择一堆内置瓷砖,但您也可以加载自己的瓷砖。
经验法则是,如果您需要外部的东西,则可能有一个*Resources类(例如CP437TilesetResources )。
您可以使用API包中可以找到的任何东西,它们是公共API的一部分,并且可以安全使用。但是,内部软件包被认为是zircon的私人,因此请记住它们可以随时更改。
文档中深入解释了一些主题。
如果您想查看一些示例代码,请在此处查看示例项目。大多数示例具有相同的Java和Kotlin变体。
如果所有其他方法都失败了,请阅读Javadocs。 API课程有充分的记录。
如果您在这里没有回答的任何问题,请随时在Hexworks Discord服务器上询问我们。
一目了然
绘画
您可以在此处找到有关绘画的详细文档。
最基本的操作zircon支撑是draw 。您可以在TileGrid上绘制单独的Tile或TileGraphics对象。 TileGraphics对象由Tile s组成。这是一个强大的工具,您可以使用简单的draw操作实现更复杂的功能。实际上,组件系统是在绘图,分层和输入处理功能之上实现的。
如果您使用Rexpaint设计程序,那么好消息是您也可以导入.xp文件。在这里阅读更多有关它的信息。
您也可以在Tile中使用Modifier S,例如blink , verticalFlip或glow 。有关完整列表,请检查此工厂对象。 Modifier s可以更改纹理(如上面的纹理)或Tile本身:
输入处理
在此处阅读有关文档中输入处理的信息。
TileGrid和Screen接口都实现了UIEventSource这意味着您可以使用它们收听用户输入。这也包括击键和鼠标输入。
分层
在这里详细介绍了分层。对于
Screen上的底漆,请进入这里。
TileGrid和Screen接口都可以实现Layerable这意味着您可以在它们的顶部添加Layer s。每个Layerable都可以具有任意数量的Layer s。 S Layer就像TileGraphics对象一样,您也可以在其中具有透明度,可用于创建精美的效果。 Component s也是Layer本身。看看:
文本GUI组件
您可以在文档页面上阅读有关组件系统的更多信息。彩色主题在这里详细介绍。
Component s是GUI控件,可用于向用户显示内容( Label S, Paragraph等),使它们能够与您的程序进行交互( Button S, Slider S等)或保留其他组件(例如Panel S)。
这些组件非常简单,您可以期望它们以您可能熟悉的方式工作:
- 您可以单击它们(按和发布是不同的事件)。
- 您可以将活动听众附加在他们身上。
- zircon实现了焦点处理,因此您可以使用
[Tab]键(向前)或[Shift]+[Tab]按键(向后)在组件之间导航。 - 组件可以悬停,您也可以将彩色主题应用于它们。
更重要的是,您可以将ColorTheme S应用于Component s。有很多内置主题,您也可以创建自己的主题。
要查看可用Component s的完整列表,请查看组件出厂对象或导航到组件文档页面。
这是组件外观中的一个示例:
动画:
在文档中阅读有关动画的更多信息。
动画是开箱即用的。您可以使用zircon自己的动画格式进行编程或静态创建它们: .zap ( zircon Animation Package)。有关此的更多信息。这就是动画的样子:
形状和盒子图
形状文档页面可以在此处找到。
您可以使用ShapeFactory实现之一绘制Shape S,例如矩形和三角形。开箱即用的是三角形,矩形和线条。前两个也有填充版本。在此处查看Shapes工厂对象。
字体和瓷砖
瓷砖的文档页面在这里。
zircon带有一堆内置字体瓷砖。这些有3种口味:
- CP437瓷砖(更多地在此处使用它们)
- 真正的类型字体
- 和图形瓷砖(在此处使用信息)
zircon还具有自己的瓷砖格式( ztf : zircon瓷砖格式),非常易于使用。在这里详细介绍。
路线图
如果您想查看新功能,请随时创建新问题或在Discord上与我们进行讨论。这是一些正在进行或计划的功能:
- 可滚动组件
- 菜单
- 表组件
- Javadoc风格的文档
- 网格 /屏幕过滤器
- 浮动组件
- 拖放支撑
- 自定义布局支持
- 组件主题
- 自定义组件支持
- 树成分
- 手风琴组件
- 组合组件
- Intellij插件
- zircon的控制台
如果您想给这些镜头中的任何一个,请随时做出贡献。
执照
zircon可在Apache 2.0许可下提供。
学分
zircon是由阿达姆森,Coldwarrl,G3ldrin,Milonoir,Seveen等创建和维护的。
我们愿意提出建议,随意向我们发消息或打开问题。也欢迎拉动请求!
zircon由:
谢谢
感谢矮人堡垒瓷砖库的人们,让我们捆绑了他们的瓷砖。
感谢Kyzrati ,他让我们将Rexpaint瓷砖包装到zircon中!
zircon与Nethack瓷砖捆绑在一起。
从Google字体中使用了一些真正的字体。
感谢Viler提供的Oldschool字体包,我们将其捆绑到了zircon中。
