下午Libjdx的理解性学习(生如K线博客)

因为项目中涉及到Libjdx,不管是考虑到以后项目的维护还是自身能力的提升,对这一块的了解非常有必要。通过查阅网上资料,搜索到一些比较有借鉴价值的博客(生如K线的博客系列)。
在此推荐给大家,[传送门](http://blog.sina.com.cn/s/articlelist_1464561462_0_1.html)
俗话说:好记性不如烂笔头。下面将对下午的Libjdx的18篇博客做出总结,有必要的话会单独整理成一个文档。

关键词和方法:

FPS:
这里写图片描述
游戏设计模式:
不仅仅是针对游戏,斧子游戏这款主机代码结构也是基于此模式实现的:MVC
循环模型
Void MyLoop (float delta) {
RenderWorld();
HandleInput();
Update(delta); }
RenderWorld:View
HandleInput:Controller
Update(delta):根据delta:定时会对Model层进行更新
ApplicationListener:
Void create() ->在游戏第一次创建时调用
Void dispose() -> 在游戏退出时调用
Void pause() -> 在游戏暂停时调用
Void render() -> 在游戏绘制自己时调用
Void resize(int width, int height) -> 在游戏窗口大小变化时调用,这里通常在桌面指游戏窗口大小,手机上表示横版竖版调整
Void resume()-> 在游戏从暂停状态恢复时调用
上述最重要的是Render()方法,Gdx.graphics.getDeltaTime():读取渲染的间隔时间,处理用户输入的Gdx.input。此外还提供了一个更加先进的机制来实现一个控制器类(InputProcessor)
场景类:Screens
这里写图片描述
可以将这些画面想象成不同的场景,通过创建控制器实现场景的切换
libGDX通过Game类和Screen接口来提供这些Screen的操作。
Render方法:
使用LibGDX绘制一幅图像是很简单的,你只要先在create方法中分配需要绘制的资源,然后在render方法中绘制,最后在dispose方法中释放资源就可以了。
@Override
public void create () {
batch = new SpriteBatch();
img = new Texture(“badlogic.jpg”);
}

@Override
public void render () {
    Gdx.gl.glClearColor(1, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.begin();
    batch.draw(img, 0, 0);
    batch.end();
}

@Override
public void dispose(){
    img.dispose();
    batch.dispose();

}
Camera:
camera是一个对准游戏世界的窗口
SpriteBatch(批处理):
SpriteBatch将使用由Camera制定的坐标系统,如前所述,这是通过使用一个矩阵来实现的,严格的说是指投射矩阵(projection matrix),camera.combined就是这样一个矩阵。然后,就是通过SpriteBatch把所有的东西都画到这个坐标系统里面
好处:
使用SpriteBatch的方式是,先开始一个新的batch,为啥是batch呢,,batch的英文意思是批处理,就是说所有的图像都是先写到这个batch里面,然后全部执行。为啥这样做呢,因为OpenGL最烦的一件事就是每次只告诉它画一张图,OpenGL希望知道一次所需要画的尽可能多的图像。通过使用SpriteBatch,我们可以让OpenGL喜欢上我们,SpriteBatch通过SpriteBatch.begin()和SpriteBatch.end()来包含所有需要绘制的图像,它会将其打包一起发送给OpenGL,这样可以大大加速绘制的速度,尤其是当你希望在每秒以60帧的速度绘制500个图像时。
Texture:
装载文字或者图片
Gdx.audio.newSound() :
处理音效
Gdx.audio.newMusic()
处理音乐
输入控制:
Gdx.input.isKeyPressed()方法告诉我们是否有一个特定的按键被按下了
Gdx.graphics.getDeltaTime()方法返回了当前帧距离上一帧画面的时间间隔,单位是秒
修图工具:
这里写图片描述
音频编辑软件:
这里写图片描述
Game和Screens结合使用
由于这篇文章篇幅较长,总结的话无异于粘贴复制,所以在这不过多赘述。
http://blog.sina.com.cn/s/blog_574b6f360102v1lh.html
关键代码:
红色箭头部分实现了两个Screen场景类的切换。
Animator精灵类:
2D动画效果的实现
输入监听:
InputProcessor 接口的实现
Game类详解:
Game类新增了getScreen和setScreen方法,create和render方法没有处理,因为是abstract类,所以可以不用处理,而是在游戏设计时在游戏主类中实现即可。 即如果游戏主类是从Game派生的话,会有8个方法 create:应用中素材初始化,然后调用第一个screen,必需品 resize:在视窗大小变化时,处理screen render:绘图 pause:应用暂停时 resume:应用继续时 dispose:应用处理不需要的素材,释放内存,必需品 setScreen:设置应用屏幕,通常可以被其他定制的函数调用 getScreen:获得当前屏幕
素材的清除(dispose):
在LibGDX中有大量的类对应处理各种素材,所有这些类都会实现一个通用的清除函数(dispose),以此来明确该类型的对象,在游戏结束时(或者是不再需要它们的时候)需要手动调用dispose函数来清除,如果没有做到这一点,可能会导致严重的内存泄漏问题,没错,其后果是相当严重的。
粒子效果(ParticleEffect):
ParticleEffect+SpriteSheetPacker两者结合实现
Viewport(映射方式有关系):
Camera显示的东西就是viewport,我们通过设定不同的camera来反应viewport里面的对象。SpriteBatch管理着自己的投射和变换矩阵,当创建一个SpriteBatch时,它会使用当前应用/游戏的设定来建立一个orthographic 投射,使用y轴向上的坐标系(原点在左下角),当调用Begin时,SpriteBatch会建立viewport。
freetype:
GDX字体扩展
GDX有7大扩展
Ai
Box2d
Bullet
Controller
Freetype
Jnigen
Tools
TextureRegion:
TextureRegion类表示了一个图像(纹理)里的一个矩形,通常被用来绘制一个大图形的某一个部分。
Sprite:
Sprite类在TextureRegion的基础上,又增加了几何形状和颜色属性
Tint(上色):
当绘制一个纹理(texture)时,可以为它上额外的颜色(tinting)
Blending:
Blending缺省是使能的,这意为着在绘制一个图像时,该图像中透明的部分会直接与屏幕上已有的纹理重合,显示出屏幕上已有的图像。
Preferences:
Preferences是一种存储应用内数据的简便方法,比如,存储用户设定,游戏状态。Preferences的工作方法就像hash map,使用字符串作为关键字(key),其他原始类型的值作为该关键字对应的值。

这里写图片描述
路径Path:
在libGDX0.9.9版中,已经提供了3种路径:
Bezier(贝塞尔曲线)
BSpline(B曲线)
CatmullRomSpline(Catmull-Rom 曲线)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值