Firmament 是由开发者 Jordan Wambaugh 推出的一款开源的 2D 游戏引擎,主要用于视频游戏的开发,代码已托管至 Github 上。Firmament 基于 Haxe NME,几乎可以在任何一个平台上运行,其中包括 Flash、PC、Mac、iOS、Android 和 HTML5 等。为了能有逼真的 2D 模拟,还提供了强大的物理引擎,可以轻松打造出类似“愤怒的小鸟”的游戏。此外,它还拥有全功能的 API。
虽然 Firmament 的推出也有段时间了,但它的开发者一直在对它进行改善。之前,Firmament 使用的是动态对象来存储和传递配置数据,虽然使用起来没什么问题,但是验证数据和处理默认值都需手动。对此,其开发者在今年做出了改善,创建了一个 FConfigHelper 类,将这些类进行包装,并提供验证的方法等。然而,为了保持向后的兼容性,你需要自己来实例化这些帮手。但是现在,由于 Haxe 抽象类型的存在,就可以自动获取 FConfigHelpers 的功能,并且旧的类型配置也能完全向前向后兼容。
现在,FDataLoader 返回的是 FConfig 对象,而不是之前的 Dynamic 类型对象。这些 FConfig 对象可以隐式地在动态对象和 FConfig 对象之间转换。你仍可以使用 Reflect 方法来阅读它们,不过如果你接受了配置对象是 FConfig 类型,你可以访问 FConfig 方法。
//Returns the field with name field, validating it has a type of type. If it's not set, returns default. get (field:String,?type:Dynamic=null,?def:Dynamic=null)
你还可以采用数组访问
class MyComponent extends FEntityComponent { var _myVar:Float; public function new(){ super (); } override public function init (config:FConfig){ _myVar = config.get ("myVar",Float,0); //Same, but without validation or default: _myvar = config["myVar"]; //can also write with array access: config["myVar"] = 2.5; } }
传送门:mobilehub 主页