最近在手上的项目开发中,从原来的使用Sprite全手写UI,开始逐步使用StablexUI,感觉还是相当不错的,强大、高效、轻量、灵活,非常适应我当前的实际需求。
不过作为小种语言的一个小众第三方开源库,虽然StablexUI的官方文档还算比较全面,但实际使用中遇到的很多问题都是文档未涉及或语焉不详的,需要参考源代码进行分析,这里会使用系列博文的形式,把我的学习心得记载下来,一方面作为备忘供自己未来查询,也可供其他开发者参考。
首先简单介绍一下StablexUI库。
StablexUI是一个纯Haxe语言的跨平台UI库,作者是一个俄国人,大概是从今年(2013)初正式发布的。
Github项目主页:https://github.com/RealyUniqueName/StablexUI
官方文档:http://ui.stablex.ru/doc/
需要特别指出的是,在StablexUI之前,专为Haxe开发的,同时适用于桌面、移动设备和浏览器的UI框架还基本不存在。因为那个时候我就深切感到了在没有UI框架支持的情况下编写界面的繁琐,特意评估了很多UI库,但是没有找到特别合适的。
我评估过的UI库包括:
HaxeAswing: 国人作品Aswing的Haxe移植版,感觉主要适用于桌面,风格不太适合移动设备
waxe: C++ UI库wxWidget的Haxe接口,不能跨平台
FeaturesUI: 基于Starling的UI库,很适合移动设备,但仅有AS3版本
后来大概在2012年底、2013年初这一段时间,出现了HaxeUI和StablexUI这两套第三方UI库,目前看来都是比较不错的选择。
HaxeUI是一套比较中规中矩的UI框架和组件库,但它的设计中其控件基类不是基于Sprite的,初期版本也不支持xml形式的界面定义。
而StablexUI虽然出现的比HaxeUI略晚,但让它成为我的最终选择的是它的几大突出特点:
* 从一开始就支持由xml生成界面,即所谓数据驱动开发。
* 充分利用了Haxe的宏语言特性,其xml解析发生在编译期,生成的界面构建代码极为高效。
* 控件基类派生于Sprite,可以方便灵活的集成于现有项目中。
* 库的架构设计非常轻量级,层次很少,灵活易于扩展。
* 真正的跨平台,完美支持Flash, C++ native, Html5。可试用官网中提供的demo:Flash版,Html5版