[cocos2d-x·技巧]关于cocos2d-x在Android下实现单点触摸小技巧

作者: 布莱特_雷欧波德
发布时间:2015-07-01 17:01:50

《宠物联萌》我承认代码写得实在是不怎么样,最明显的一点是有些界面如果玩家随便乱点,很容易会崩溃。幸好《宠物联萌》这游戏没啥操作,基本上单点触摸即可满足玩家要求,所以为了防止玩家乱点,我搞了一个小技巧:让《宠物联萌》只响应一个点击事件。

 

然后扯点题外话,ios确实搞得比Android要细心呀,直接提供一个属性给多点触摸做开关,所以ios上《宠物联萌》很轻松地实现单点触摸。

 

只是用ccTouchBegan来实现单点触摸是不行的,如果一个父CCLayer里面包含几个重写了ccTouchBegan的子Layer(或Menu),玩家同时点击2个子Layer实际上还是会“变相多点触摸”。要做到真正只支持单点触摸的话,很简单的,改cocos2d-x源代码...

 

简述情况:

·游戏运行平台:Android

·Cocos2d-x引擎版本:cocos2d-1.0.1-x-0.13.0-beta

 

首先,在我们的Android工程src目录下,找到这个类:

src\org\cocos2dx\lib\Cocos2dxGLSurfaceView.java

 

然后,打开这个java文件,定位到函数

 

 public boolean onTouchEvent(final MotionEvent event) {...

 

最后,在onTouchEvent函数里面的两行代码加上:

 

 switch (event.getAction() & MotionEvent.ACTION_MASK) {          case MotionEvent.ACTION_POINTER_DOWN:              if (pointerNumber > 1) return false;  ...          case MotionEvent.ACTION_DOWN:              if (pointerNumber > 1) return false;  ...

 

即可搞定。

 

然后又扯点题外话,其实我觉得如果游戏框架写得好,每个CCLayerTouch事件能够统一分派处理的话,这个小技巧派不上用场的。可惜我还没这么厉害能搭个好框架出来,公司也没啥牛人会搭框架,比较无奈呀。这个小技巧,希望没有童鞋“有机会”用上吧....

来源:http://www.cnblogs.com/j1223jesus/archive/2012/10/17/2727093

推荐: