穿越红尘不扰关,回旋天地去复还

系统 1373 0

实在不好意思,前一段我家老爷子住院做了个颈椎手术,最近他老人家身体好了(刚刚和母上逛公园去了),我也就闲下来了。很长时间没上博客,也没有读任何邮件,非常对不住大家,这两天我会补回来。


——————————————————————————————————————————————————

不过,这段时间小弟并非什么都没干,话说LGame的0.3.3正式版,已经到了整理下代码就能发的程度了,顺便传两张图。

穿越红尘不扰关,回旋天地去复还 穿越红尘不扰关,回旋天地去复还

穿越红尘不扰关,回旋天地去复还


我对Java版也做了一些修正,比如小弟最近将ADT升级到2.0后,发现以前的示例工程全部无法【直接】使用了,经仔细观察,发现是Eclipse工程配置和旧版有了变化而导致的;因此我在Beta版中又额外修正了部分示例,以防用户无法使用旧版LGame示例时,而误以为是框架运行Bug(-_-|||)。其实最简单的修改方式,无非是生成新工程,然后copy源码过来,这样原来的遗留项目也就正常了(一开始就直接用ADT1.6以上版本的用户不必操心此问题)。

PS:7月12上传到SVN中的。


另外,我为LGame中添加了SpriteBatch,SpriteRegion,LTextureRegion这三个基本同Libgdx近似名称类功能等价的新类(但坐标系不同,具体功能也有扩展和删减,还加入了SpriteBatchScreen这个直接调用SpriteBatch的类),方便移植些东西过来。并增加了一个LGame和Libgdx的混用包,以求更直接的“照搬”代码。需要注意的是,此混用包是以LGame底层API为基础的Libgdx功能再现,所以并不是标准的Libgdx类库,功能有所删减,同时也不需要Libgdx的so库支持(SVN的Beta版中有使用的例子)。另外,我将Box2D那部分使用Libgdx的代码也放到里面去了,也就是说Physics部分现在需要同时加载这个包才能用。

除了标准的setScreen方法外,最近我又新添加了replaceScreen这一切换方式,用以进行渐进式的窗体变换(通过设定MoveMethod模式,可以进行16种样式的窗体移动交替,就是常见的一个窗体逐步进入画面,一个窗体逐步移出画面那种桥段……)。PS:该方式本身就属于特效,所以使用replaceScreen切换画面时,在onTransition设定的特效会被强制无效化。


对Action事件部分也有较大修改,触发对象换成了所有继承自Action接口的类,而不限于Actor对象才能使用自动事件。不过原先使用了Actor做动作的话也无需介怀,即便您使用到了Actor特有的函数(startAnimation,stopAnimation之类的),直接强转Action为Actor即可照用不误。

并且删除了一些使用量较少的辅助类,为新增加的功能腾出空间。

经过长时间“调教”,话说0.3.3版中明显的Bug应该已经找不到了,剩下的就是同步到C#、C/C++以及HTML5(JavaScript)这三种语言的版本中去。事实上,因为小弟开发LGame的时间段太散(经常写几天又中断几天),所以很多地方测试不够,导致旧版中有些很明显的Bug存在(比较明显的是C#版,7月12号更新的这版Beta也就刚刚能使用|||)。所以我对0.3.3版的正式发布变得非常小心,绝不留后患(发布0.3.3后我就准备组团了,毕竟维护4种语言个人很难做到,突显得打基础更重要~)


之所以没有立即发布0.3.3,是因为小弟整合四种语言找平衡中,顺路补全测试用例,否则有的模块大家不知道该怎么用-_-。比如把Java版原来的 org.loon.framework.android.game.xxxx 包命名方式直接缩短为 loon.xxxx。

具体原因是为了兼顾C/C++版,因为如果和Java版package基本等价,在C/C++中使用命名空间时,就要变成如下命名样式:

namespace org
{
namespace loon
{
namespace framework
{
namespace javase
{
namespace game
{
namespace core
{


这长度,实在太碉堡了|||。而且调用时using org::loon::framework::game::xxxx一大串也非常难记。所以为了平衡各版API通用性,小弟只能牺牲点Java习惯,削足适履(虽然包名太短,在Eclipse里展开效果不好看,但在NetBeans中看着还成-_-)

PS:如果您暂时还需要使用旧版0.3.3-Beta,小弟建议一定要下载SVN中0712这个更新,否则以后的0.3.3(无论是Beta还是正式发布)都将不是目前这种包名了。当然,也没有多大的变化,仅仅是包名缩短,加之极少量LGame中Java类名与C/C++及C#版中namespace名或API名有冲突,进行了改名而已。等正式颁发布时小弟会加以详细说明(缩短全部Java包名后,jar居然额外省出了十几KB……)。


还有C++版和Java版的匹配问题不用担心,小弟把8成的Java常用API都以C++的方式实现了(具体地说,是java.io,java.nio,java.lang,java.util这四个和本地环境关系不大的部分被我移植了),所以基本数据类型,集合,线程之类的写法都可以直接套用,有简单的GC实现(引用计数器),可以在设定好的前提下支持反射(手动注册反射类)。这都是为了让Java项目能直接导出为C++项目所做的基础工作。

0.3.3正式版,过两天加一个初步的迁移工具(主要功能是把Java版项目转换成C#、C++版项目,所以需要API高度匹配,否则不好做。为此C++版甚至仿写了8成的Java类库),再写几个新示例就放出来了。大体上讲依旧Java语法特性为主,兼顾C/C++与C#用户习惯,在和前三种语法没有大冲突的前提下,适当考虑JavaScript用户习惯。

___________

最近剧荒,补女皇之刃,附带追鬼畜勇者,还我H之魂(新出的7月里番已经看完,只能看看这些了)——以及偏正常,略百合的贫乏神来了(另,距离第十三号仓库开播还有九天,总算有个能看的了)。

穿越红尘不扰关,回旋天地去复还


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论