LGAME开发随手记——sprite淡入淡出实现详解

最近心血来潮,想要在ANDROID上做一个战棋游戏。

 

使用LGAME作为游戏引擎。话说LGAME虽然颇为强大,但是有不少地方存在不足。(当然也有可能是我没详细了解到)

 

而且网上的资料很少,出了作者的开发文档外,基本没啥资料。

 

突然想起这个blog,以前因为一些事情也没有继续经营。正好重新整理,随手写一些开发过程遇到的问题和技术的资料,以供大家参考。

 

废话少说,先讲讲我的目的。很简单,就是要实现动态加载图片然后渐入渐出。

 

从例子入手。我看了几个例子都是从screen类出发,根据时间变化(使用alter(timer)函数),不停的刷新Desktop和Sprite组件。

 

这 里做一个简单的说明,screen的刷新使用的是LGameAndroid2DView中的CanvasThread(游戏窗体主循环调用的)。遍历系统 中所有的screen,依次调用对应的runTimer(timerContext)、createUI(gl)。而runTimer则通过 this.sprites.update(elapsedTime)和this.desktop.update(elapsedTime)实现刷 新,createUI则通过sprites.createUI(g)和desktop.createUI(g)实现刷新。

 

需要注意的是,runTimer(timerContext)是时间的变化进行刷新,createUI是通过screen背景显示模式生成相应的LGraphics,然后根据LGraphics更新UI。这里的LGraphics是一个传递的变量,可以使用将LGraphics作为参数把spriteImage重绘,也可以是将LGraphics当做图片直接进行加工,主要看重载函数如何实现。(个人感觉一个是从下到上,一个是从上到下。)

 

先看看runTimer(timerContext)。

每一个Sprite定义的时候会赋予一个 Animation,一个Animation可以是单一的Frame组成,也可以是多个Frame组成。默认调用Animation中的update函数 进行刷新,主意,Animation中的update函数是synchronized的。当然,可以通过重写Sprite中的update函数实现多变的 Animation update。

 

然后看看createUI。每个sprite都有默认的createui函数,根据sprite设定的filterType,对Animation中当前时间的spriteImage进行factory.doFilter(image.getBitmap(), filterType)后,再根据实际情况绘制bitmap和设定区域。

 

回 到我们的初衷。要实现淡入淡出,在AVG例子里面给我们一个简单的实现方法:在screen中添加fade,type为 TYPE_FADE_IN,delay可以理解为帧数。fade其实也是一种sprite,fade中的update是改变对应的alpha值。然后在 createUI时创建一个全屏的rgb LGraphics,覆盖整个屏幕。即可实现淡入的效果。

 

若是需要对某一sprite实现淡入淡出效果,则重载对应sprite的createUI函数,更新LGraphics的alpha值即可。(开始的时候还以为sprite的淡入淡出直接在update那里就可以实现,以至于在那里纠缠了很久,想想真是觉得笨死了啊。。。)

 

 

PS:本人没有接触过太多图像显示和生成的项目,所以不懂得这方面的结构和顺序。可能上述分析中有严重的疏漏和误解,欢迎大家指出。谢谢。

 

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值