`
nbtlxx
  • 浏览: 253635 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

cocos2dx斗地主产品错误修复过程

阅读更多
一个多星期没有写新的东西了。下面内容是最近修复的一个bug的过程记录。

问题描述:
1. 产品需要进行修改密码的动作。点击提交后,界面死去响应。

解决问题过程纪录:
    1. 修改密码没有收到回复,同时正在加载窗口没有销掉;
    2. 抓包查看是否有包发出去;或者跟服务器端确认;
      http://www.tastycocoabytes.com/cpa/
      cocoa packet analyzer
       这个工具没有深入使用。貌似pc也有类似的比较不错的产品叫debugview. 我的同事使用比较多。可以比较方便的查找tcp数据包的通信;对于未加密数据的跟踪一个很好的选择。
    3. 尝试错误重现:点击后,界面仍然失去响应,但是重新登陆时提示密码错误。看来密码已经被修改;
    4. 使用filediffer比较文件差异。这是mac环境不错的工具,方便比较代码的差异,不错的工具。但是没有发现有用的信息。几个有怀疑的地方,和旧版本是代码一致的。奇怪的事情就是旧版本功能测试正常。
    5. 继续跟踪,打开产品的log开关,发现一个意义的信息。就是发送消息后,服务器端的回包成功返回,并且加入到消息队列等待使用。
       相关代码没有能够将message pop出来,导致界面上没有任何提示。
       void BaseLayer::dohandle(float dt)
{
   //此处出错, mController空指针,无法继续执行。
    if (mController == NULL) {
        return;
    }
    while(MyQueue::sharedInstance()->count() >0 && MyQueue::sharedInstance()->isPopUnlock()==false)
    {
        Message *message = (Message*)MyQueue::sharedInstance()->pop();
        if(message)
        {
            m_currentMillisecondTime = TimeUtil::millisecondNow();
            retryTimes = 0;
            mController->handleLogic(message);
            MyQueue::sharedInstance()->removeObject(message);
        }else
        {
            //CCLog("BaseLayer::dohandle message or controller is null");
            LoggerUtil::getLogger()->logInfo("BaseLayer::dohandle message or controller is null");
        }
    }
}

    6. 解决办法,按照现有的客户端框架,增加专门layer来包装一个view,controllor
    
bool ProfileLayer::init()
{
    LoggerUtil::getLogger()->logInfo(__FUNCTION__);

    bool bRet = false;
    
    do {
        CC_BREAK_IF(! BaseLayer::init() );
        
        ModuleTabView* node = ModuleTabView::create();
        mController =  new ProfileController();
        node->setTouchDelegate(mController);
        mController->setNode(node);
        this->addChild(mController->getNode());
        bRet = true;
    } while (0);
    return bRet;
}     


     7. 继续解决,增加ProfileController, 负责处理两个界面的网络回包和touch事件
      提前释放
      解决办法:  
      mController = ProfileController:new();
      修改为:
      mController = new ProfileController();
      profileLayer.cpp
    9. 将原先的handleLogic(inputMessage)相关代码复制
       ios运行正常
    10. 修改jni/Android.mk
      将新增的cpp文件添加到脚本
      ./build_native.sh
      编译通过,测试通过
    终于解决上述问题。修改别人的代码,确实感觉象捅马蜂窝,但是我们没的选择。无法改变的,就要去接受。
0
1
分享到:
评论

相关推荐

    Cocos2d-X斗地主游戏完整源码

    这个“Cocos2d-X斗地主游戏完整源码”是一个利用Cocos2d-X框架构建的斗地主游戏项目,包含了从新手到大师五个级别的游戏体验,旨在提供给开发者一个学习和参考的实例。 1. **Cocos2d-X框架**:Cocos2d-X是跨平台的...

    疯狂斗地主源码cocos2d后端- c

    Cocos2d-X斗地主游戏完整源码,游戏分有新手场,初级场,中级场,高级场和大师场5个级别,画面非常精美。。

    Cocos2d-x《开心斗地主》棋牌类游戏源码

    《开心斗地主》是一款基于Cocos2d-x框架开发的经典棋牌类游戏,适用于移动平台。Cocos2d-x是一个跨平台的2D游戏开发框架,由C++编写,支持iOS、Android、Windows等多个操作系统。它以其高效、易用的特点,深受游戏...

    斗地主代码,前端cocos2d,后端nodejs

    《斗地主游戏开发:Cocos2d前端与Node.js后端详解》 在游戏开发领域,斗地主是一款广受欢迎的扑克牌游戏,而利用现代技术栈进行开发可以极大地提升用户体验。本项目以“斗地主代码研究,前端cocos2d,后端nodejs”...

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台发布、程序代码管理、两大应用商店发布产品。...

    cocos2d-x-cocos2d-x-2.2.2.zip

    这个压缩包“cocos2d-x-cocos2d-x-2.2.2.zip”包含了cocos2d-x 的2.2.2版本,该版本是cocos2d-x发展中的一个重要里程碑,它提供了许多改进和优化,使得开发者能够更加高效地创建2D游戏和应用。 在cocos2d-x 2.2.2中...

    基于cocos2d-x的斗地主毕设论文

    【基于cocos2d-x的斗地主游戏开发】 cocos2d-x是一个强大的开源游戏开发框架,支持跨平台开发,适用于iOS、Android、Windows等多个操作系统。它采用C++作为主要编程语言,允许开发者创建2D游戏、UI和其他互动内容。...

    斗地主 cocos2d-x 3

    《斗地主游戏开发实战——基于cocos2d-x 3框架在iOS系统中的实现》 在游戏开发领域,斗地主是一款深受广大玩家喜爱的扑克游戏,它以丰富的策略性和娱乐性吸引了无数用户。本篇文章将深入探讨如何使用cocos2d-x 3...

    cocos2d-x API中文文档

    【cocos2d-x API中文文档】是一份详尽的资料,主要涵盖了cocos2d-x游戏引擎的API,这份文档适用于2015年的最新版本。cocos2d-x是一个基于MIT许可证的开源游戏引擎,它以快速、简单且功能强大的特性闻名,允许开发者...

    cocos2d-android.jar.zip_CoCos2d_android jar_android game_cocos2d

    cocos2d-android游戏引擎是著名游戏引擎cocos2d游戏引擎的Android版。cocos2d-android游戏引擎性能优越、易学、可以进行纯java编程、具有极高的研 究价值、大大的降低了开发者的学习成本。您只需要一台普通配置的...

    cocos2d-x 3.0

    《cocos2d-x 3.0:游戏开发中的角色移动技术详解》 在游戏开发领域,cocos2d-x是一款广泛使用的开源2D游戏引擎,尤其在移动平台上的应用非常广泛。cocos2d-x 3.0版本带来了许多性能优化和新特性,使得开发者能够更...

    cocos2d-x_v3.16安装及环境变量配置文档

    cocos2d-x 是一个开源的游戏开发框架,使用 C++ 语言编写,支持多平台发布,包括 iOS、Android、Windows、macOS、Linux 和 Web。cocos2d-x v3.16 是该框架的一个版本号,本文档主要介绍了该版本的安装流程以及环境...

    Cocos2d-x实战 JS卷 Cocos2d-JS开发

    《Cocos2d-x实战 JS卷 Cocos2d-JS开发》是一本深入探讨Cocos2d-x游戏引擎JavaScript版本使用的专业书籍。Cocos2d-x是全球范围内广泛采用的游戏开发框架,尤其适用于2D游戏的制作,而Cocos2d-JS则是其JavaScript接口...

    Cocos2d-JS游戏开发

    在学习Cocos2d-JS的过程中,阅读《Cocos2d-JS游戏开发》这本书会非常有帮助。作者作为《保卫萝卜》的核心开发人员,将实战经验融入理论讲解,使读者能更直观地理解游戏开发流程。王哲,Cocos2d创始人,亲自为本书...

    cocos2d-iphone~cocos2d-html5移植之旅

    ### cocos2d-iphone至cocos2d-html5移植之旅:深入解析与实践指南 #### 引言 在数字化时代,跨平台游戏开发成为了一种趋势,尤其在移动设备和网页端之间的转换变得日益频繁。《cocos2d-iphone至cocos2d-html5移植...

    cocos2d-x json字符串与cocos2d::Value转换工具

    该资源主要用于cocos2d-x中Value与json字符串的相互转换,提供从json文件读取为cocos2d::Value,cocos2d::Value写入到文件,cocos2d::Value转换为json字符串,json字符串转换为cocos2d::Value。json字符串转换成cocos...

    cocos2d-x windows vs2010配置

    "cocos2d-x windows vs2010 配置详解" 本文将详细介绍如何在 Windows 环境下使用 Visual Studio 2010 配置 Cocos2d-x 游戏引擎。Cocos2d-x 是一个跨平台的游戏引擎,可以在多种平台上运行,包括 Windows、Mac OS X...

    cocos2d-android jar包全套.zip

    在开发过程中,你可以利用Cocos2d提供的各种组件,如`CCScene`(场景)、`CCSprite`(精灵)、`CCLabel`(文本标签)等,创建游戏对象和交互逻辑。同时,别忘了Cocos2d支持事件处理,如触摸事件和键盘事件,这使得...

    疯狂斗地主源码 cocos2d

    【疯狂斗地主源码 cocos2d】是一个基于Cocos2d-X引擎开发的斗地主游戏项目。Cocos2d-X是一个跨平台的游戏开发框架,它使用C++作为主要编程语言,支持iOS、Android、Windows等多个操作系统。这个游戏源码包含了一个...

    cocos2d-x-2.1.4.rar

    《cocos2d-x 2.1.4:探索移动游戏开发的新篇章》 cocos2d-x 是一个跨平台的2D游戏开发框架,它为开发者提供了强大的工具和技术支持,使得游戏开发变得更为便捷。2.1.4 版本是这个框架的一个重要里程碑,它在前一...

Global site tag (gtag.js) - Google Analytics