分享

cocos2d

 笔记小窝 2015-12-24

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


然后扯点题外话,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文件,定位到函数

  1. public boolean onTouchEvent(final MotionEvent event) {...
复制代码


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

  1. switch (event.getAction() & MotionEvent.ACTION_MASK) {
  2. case MotionEvent.ACTION_POINTER_DOWN:
  3. if (pointerNumber > 1) return false;
  4. ...
  5. case MotionEvent.ACTION_DOWN:
  6. if (pointerNumber > 1) return false;
  7. ...
复制代码

即可搞定。

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


原文来自:http://www.cnblogs.com/j1223jesus/archive/2012/10/17/2727093.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多