山寨腾讯“爱消除”游戏之交换特效优化
2013-11-24 22:00
302 查看
【广而告之】山寨腾讯“爱消除”游戏已经正式入驻GitHub,项目地址是:https://github.com/3125788/CrazyLink
欢迎广大寨友一起来完善这个游戏。
这个山寨开源工程得到了以下网友的关注,在这里先谢过了!
在山寨腾讯“爱消除”游戏第四日的教程中,我们介绍了交换特效drawExchange的详细实现方法。这个特效一直沿用到现在。
细心的寨友可能已经发现了,如果用手指在屏幕上快速地乱滑,也就是在前一个交换动作没有彻底完成之前又开始另一个交换动作,屏幕上的显示会出现动物消失的情况,滑动的动作如果较慢,就不会有这种现象。
今天,我们就来解决这个问题。这个 解决问题的方法也可以用到其它特效上。
首先,我们用一个ArrayList来保存可操作的DrawExchange对象列表,取而代之原来仅有的一个DrawExchange对象。(红色是删除的代码,绿色是新替换的代码)
其次,我们新增了一个函数来处理交换特效对象列表的初始化:
第三步,增加一个获取DrawExchange对象的方法,如果没有可用的对象,则返回null,这个方法在触发交换动作EXCHANGE_START时会用到:
获取DrawExchang对象函数:
第四步,新增交换渲染对象的执行函数,该函数在渲染EFT_EXCHANGE特效时会被调用:
交换特效执行函数:
通过以上简单的四步,就实现了对交换特效的优化,优化后,玩家可用快速地随意在屏幕上快速滑动,多个交换特效会同时得到执行。这个改进可以让玩家更好地利用规则得到高分。
欢迎广大寨友一起来完善这个游戏。
这个山寨开源工程得到了以下网友的关注,在这里先谢过了!
在山寨腾讯“爱消除”游戏第四日的教程中,我们介绍了交换特效drawExchange的详细实现方法。这个特效一直沿用到现在。
细心的寨友可能已经发现了,如果用手指在屏幕上快速地乱滑,也就是在前一个交换动作没有彻底完成之前又开始另一个交换动作,屏幕上的显示会出现动物消失的情况,滑动的动作如果较慢,就不会有这种现象。
今天,我们就来解决这个问题。这个 解决问题的方法也可以用到其它特效上。
首先,我们用一个ArrayList来保存可操作的DrawExchange对象列表,取而代之原来仅有的一个DrawExchange对象。(红色是删除的代码,绿色是新替换的代码)
其次,我们新增了一个函数来处理交换特效对象列表的初始化:
void initExchangeList() { DrawExchange drawExchange; for(int i = 0; i < CrazyLinkConstent.EXCHANGE_OBJ; i++) { drawExchange = new DrawExchange(drawAnimal); controlRegister(drawExchange.control); mDrawExchangeList.add(drawExchange); } }
第三步,增加一个获取DrawExchange对象的方法,如果没有可用的对象,则返回null,这个方法在触发交换动作EXCHANGE_START时会用到:
case EXCHANGE_START: { clearAutoTip(); Bundle b = msg.getData(); int col1 = b.getInt("col1"); int col2 = b.getInt("col2"); int row1 = b.getInt("row1"); int row2 = b.getInt("row2"); mStatus[col1][row1] = EFT_EXCHANGE; //处于交换状态 mStatus[col2][row2] = EFT_NONE; setSingleScorePosition(col1, row1); int pic1 = getPicId(col1, row1); int pic2 = getPicId(col2, row2); DrawExchange drawExchange = getDrawExchange(); if(drawExchange != null) drawExchange.init(pic1, col1, row1, pic2, col2, row2); break; }
获取DrawExchang对象函数:
static DrawExchange getDrawExchange() { DrawExchange drawExchange; CtlExchange ctl; for(int i = 0; i < CrazyLinkConstent.EXCHANGE_OBJ; i++) { drawExchange = mDrawExchangeList.get(i); ctl = (CtlExchange)drawExchange.control; if(!ctl.isRun()) return drawExchange; } return null; }
第四步,新增交换渲染对象的执行函数,该函数在渲染EFT_EXCHANGE特效时会被调用:
case EFT_EXCHANGE: //交换特效 drawExchangeRun(gl); break;
交换特效执行函数:
void drawExchangeRun(GL10 gl) { DrawExchange drawExchange; CtlExchange ctl; for(int i = 0; i < CrazyLinkConstent.EXCHANGE_OBJ; i++) { drawExchange = mDrawExchangeList.get(i); ctl = (CtlExchange)drawExchange.control; if(ctl.isRun()) drawExchange.draw(gl); } }
通过以上简单的四步,就实现了对交换特效的优化,优化后,玩家可用快速地随意在屏幕上快速滑动,多个交换特效会同时得到执行。这个改进可以让玩家更好地利用规则得到高分。
相关文章推荐
- 山寨腾讯“爱消除”游戏之菜单特效
- 山寨腾讯“爱消除”游戏之失去生命特效
- 山寨腾讯“爱消除”游戏之菜单特效
- 山寨腾讯“爱消除”游戏之自动提示特效
- 山寨腾讯“爱消除”游戏之生命特效
- 山寨腾讯“爱消除”游戏之奖励特效
- 山寨腾讯“爱消除”游戏之获得生命特效
- 山寨腾讯“爱消除”游戏7日教程--DAY3
- 山寨腾讯“爱消除”游戏7日教程--DAY6
- 山寨腾讯“爱消除”游戏之声音效果
- 山寨腾讯“爱消除”游戏之屏幕自动适配
- 山寨腾讯“爱消除”游戏7日教程--DAY7
- 山寨腾讯“爱消除”游戏之屏幕拾取技术
- 山寨腾讯“爱消除”游戏之屏幕拾取技术
- 山寨腾讯“爱消除”游戏7日教程
- 山寨腾讯“爱消除”游戏7日教程--DAY5
- Android 山寨腾讯“爱消除”游戏源码 视频教程
- 山寨腾讯“爱消除”游戏7日教程--DAY2
- 山寨腾讯“爱消除”游戏7日教程--DAY4
- 山寨腾讯“爱消除”游戏之框架总结