Libgdx 游戏开发 心水分享

本文只是记录我在GDX开发时遇到的一些问题 记录下来

背景说明:GDX现在也是新上手.属于上手期,另外我个人不喜欢用框架自带的功能组件 就喜欢瞎折腾. 勿喷

1:actor添加了action发现没有反应 动作类根本没触发 看源码才发现 action是依靠stage类的act()通知去更新 在render重写中 添加

Stage.act();

2:游戏过程中 如果尺寸发生改变 会造成游戏事件的坐标发生混乱 解决 在resize重写中 添加

stage.getViewport().update(width, height);

3:截剪功能实现

private Rectangle _mScissorRec = new Rectangle();
private Rectangle _mTemp = new Rectangle(0, 0, 100, 30);
private Stage _mStage;

//在render重写中实现
_mStage.calculateScissors(_mTemp, _mScissorRec);
ScissorStack.pushScissors(_mScissorRec);
_mStage.act();
_mStage.draw();
ScissorStack.popScissors();

_mTemp属于要裁剪的区域 因为现实情况中 游戏内容都是经过了缩放处理 所以需要计算得出在当前缩放比例的情况下提供的源区域 对应的结果区域是多少

calculateScissors就是实现此功能(PS:resize时一定要更新视口 不然会出现截剪错误)

ScissorStack.pushScissors 添加一个截剪区域  调用openGL 的glScissor方法

ScissorStack.popScissors(); 删除最后添加的裁剪区域 跟上面的形成对应 类似数组一个添加 一个删除


4:图层混合

最开始我尝试在render中去添加openGL的glBlendFunc方法 发现没有效果 后面看了一下SpriteBatchr的源码 发现原来这里面已经有了实现

stage类中的SpriteBatch属性

SpriteBatch类中有一个方法 setBlendFunction 该方法可以实现 里面的参数具体参与openGL编程里的参数介绍 是一样的 例

_mStage.getBatch().setBlendFunction(GL20.GL_FUNC_ADD, GL20.GL_FUNC_ADD);

5:UI编辑器

最开始让我最纠结的就是GDX没有配套的工具 曾经无数在群里问别人 "你们用的是什么UI 及动画编辑器"

后面我也看了一下现有的一些其他框架的编辑器 例 COCOS IDE spine 发现都有一个共同点 就是编辑完了以后 输出通用的格式例Josn XML

通过这个思路 我发现只要找到一个成熟的UI编辑器 我将该UI编辑器的结果导出一定的数据结构 然后我在GDX里实现一次就行了

本人现在也在弄页游 发现flash绝对是这思路的首先

我在flash里将用到的图片导入 然后生成元件添加至舞台排版和编辑特效 falsh对于特效有很完善的特效编辑功能

剩下最关键的是 怎么样将SWF解析成我们能用的数据 我用的是AIR 因为本人以前是页游 SO.....

AIR的思路就是一帧一帧 将特效里的元素各状态属性导出来 属性包括(位置 旋转 缩放 缩放/旋转中心点 透明度 混合.) 取哪些属性 就看AS3 跟GDX有哪些相同的属性.及GDX中我们实现了哪些功能.

这里只是提供一个可行的解决思路 FLASH是我用过最爽的特效编辑器 没有之一. 它的引导层 它的补间......  

难度系数3(必备技能 AS3)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值