位置: 编程技术 - 正文

CCAssert(sm_pSharedApplication, "")导致程序闪退的原因以及解决方案

编辑:rootadmin

推荐整理分享CCAssert(sm_pSharedApplication, "")导致程序闪退的原因以及解决方案,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

今天我家小管遇到一個問題,每次都是報

中的ccassert(sm_pShareApplication,"")的錯誤。百度之後發現解決方案是:

按照這方案來做之後,問題果然迎刃而解。可是我家小管問我,為什麼會這樣就不會閃退了呢?一時語塞,都不知道怎麼回答。然後按照修改的地方順藤摸瓜的慢慢的看上去發現

看了一下halloworld中的pro.android/jni/hallocpp/main.cpp 这里是我们cocos程序在android中的真正的入口。

JNI_OnLoad(JavaVM *vm ,void *reserved)会在System.loadLibrary("cocos2dcpp")中被调用,开始加载此libcocos2dcpp.so。在HalloWorldActivity 的onCreate方法开始正式构造我们的cocos世界。这里直接调用的Cocos2dxActivity的onCreate(final Bundle savedInstanceState)方法。

Cocos2dxHandler主要处理显示Dialog的消息,Cocos2dxHelper是个辅助类,我们主要看init()方法

this.mGLSurfaceView = this.onCreateView();创建了一个Cocos2dxGLSurfaceView对象。这个Cocos2dxGLSurfaceView对象是我们cocos的进行绘制的所需要的对象。其中有一个onSurfaceCreated()方法。onSurfaceCreated():当创建GLSurfaceView时被调用,只调用一次.在这个方法中执行只发生一次的动作,比如设置OpenGL环境参数或初始化OpenGL图形对象.

好了找到了nativeInit的调用的位置,我们来看看nativeInit做了什么事情。

CCDirector就是是cocos2d-x中的导演类,该类在$(sourcedir)cocos2dxCCDirector.cpp中实现。方法sharedDirector是类CCDirector的一个静态方法,该方法用来创建游戏中唯一的CCDirector对象,代码如下:

CCAssert(sm_pSharedApplication, "")导致程序闪退的原因以及解决方案

这里的CCCCDisplayLinkDirector是CCDirector的子类,方法init()做一些初始化工作:

创建好导演对象后,Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit中调用了该对象的getOpenGLView方法:

该方法返回用于游戏绘制的CCEGLView,在init()中,m_pobOpenGLView复制为NULL。在Android平台下,这个CCEGLView其实没有什么作用,因为游戏都是绘制在Cocos2dxGLSurfaceView上的,因此方法Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit接着执行if分支:

这里同样创建了游戏中类CCEGLView的唯一实例,类在$(sourcedir)cocos2dxplatformandroidCCEGLView.cpp中实现。接着执行

创建了一个类AppDelegate对象,类AppDelegate在$(sourcedir)samplesLuaHelloLuaClassesAppDelegate.cpp中实现,类AppDelegate在各个平台之间共用的:

该类继承自CCApplication,注意类CCApplication是在$(sourcedir)cocos2dxplatformandroidCCApplication.cpp中实现的,它的实现是与平台相关的。创建AppDelegate实例的工作实质就是实例化CCApplication,它的构造函数代码如下:

可是这与修改Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeOnPause()有什么关系呢?

Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeOnPause函数在Cocos2dxGLSurfaceView的handleOnPause中被调用。

handleOnPause()又再Cocos2dxActivity 的OnPause()中被调用。

可是如果这个mGLSurfaceView还没有被new的时候Cocos2dxActivity被别的Activity 给挂起了,于是乎就会自动执行OnPause 方法,而此时CCApplication还没有被初始化,所以直接调用了

就用引起空指针异常,程序就会闪退了。可是CCDirector::sharedDirector()->getOpenGLView() 在上文中我们看到它是和CCApplication一起初始化的,所以只要CCDirector::sharedDirector()->getOpenGLView()为真,那么我们就可以放心的使用CCApplication啦。

cocos2dx环境配置及打包apk 转自:

(转)记一次内存优化的分享 原文:记一次内存优化的分享公司游戏已经进行到最后一个阶段了,经过最后一次引擎升级之后使用的是3.3的版本。以前产品定位的目标是只需要兼容1G

cocos2dx 3.X 播放视频 一直在纠结于在项目中添加视频的播放!Android要调用JAVAIOS要第三方库,总觉得很麻烦有木有!!!!正文::::::首先:在.h要引入两个头文件#inc

标签: CCAssert(sm_pSharedApplication, "")导致程序闪退的原因以及解决方案

本文链接地址:https://www.jiuchutong.com/biancheng/368820.html 转载请保留说明!

上一篇:cocos2dx 两个重叠按钮点击响应关系(cocos2dx3d2d结合)

下一篇:cocos2dx环境配置及打包apk(cocos环境搭建)

  • 金税盘的会计科目
  • 增值税申报表出口退税
  • 计算本月所得税税率为25%
  • 一般纳税人开劳务发票几个点
  • 个人注册公司有什么优惠政策
  • 怎么快速金蝶数据入库
  • 农业企业增值税纳税实务实训心得
  • 小规模纳税人专票和普票区别
  • 个税受雇日期以哪个日期
  • 其他应付款太多怎么做账务处理
  • 合并扣税金额是什么
  • 房企所得税纳税义务发生时间
  • 海关未抵扣证明
  • 小型微利企业享受企业所得税减免优惠时主要留存备查
  • 商贸企业可以使用月末一次加权平均
  • 认证后的发票可以留抵下月抵扣吗
  • 环境保护税即将施行 有哪些点需要关注?
  • 机器设备进项税额是否要分期抵扣
  • 怎样理解递归
  • 利润表资产处置损益怎么填
  • 增值税发票国家收几个点的钱
  • 收到人民政府寄来的ems
  • 非上市公司股权转让
  • 质量扣款发票怎么处理
  • 财务费用错记成管理费用
  • 进口货物账务处理外币
  • 费用化支出含义
  • 更换营业执照要多久才能拿到
  • 财务费用增加记借方还是贷方
  • 无法启动个人热点iphone
  • win10系统白名单怎么设置
  • 股东实缴出资的证明
  • 投资企业流程
  • 电脑取消共享文件夹
  • win10创意者更新易升
  • 子公司增发股票母公司为什么会产生利得
  • 关闭非系统进程
  • 混合债务工具
  • object转map工具类
  • PHP:file_get_contents()的用法_Filesystem函数
  • 预支员工报销费用会计科目
  • 企业租赁不动产税率
  • 社保申报已扣款还能作废吗
  • 纳税人未抄报税不能进行申报,怎么办
  • 红字专用发票是红色的吗
  • php强大吗
  • js不同类型的工厂函数
  • 锅炉维修项目
  • rust 前端开发
  • 经营一家淘宝店铺,自然就应该做好
  • 医院交什么保险
  • 以前年度少计成本的税务处理
  • 车间设备折旧费计入产品成本吗
  • 个体工商户核定征收超额怎么缴税
  • 银行贷款是应付账款吗
  • 现金比率合适范围
  • 计提以前年度应付股利的分录
  • 会计出账入账怎么做
  • doc怎么使用
  • xp系统1
  • xp主题设置
  • 随机产生10个数
  • linux 静态库
  • 如何设置windows密码
  • 为啥没有win8 win9
  • win10清理系统盘垃圾
  • windows xp能装微信吗
  • nipc什么意思
  • unix网络命令
  • win10系统注册名修改
  • 不同系统电脑能共享吗
  • Cocos2d-x之getVisibleSize,getContentSize,boundingBox,getContentSizeInPixels,convertToGL,convertToUI
  • 简单阐述javascript的主要作用
  • 网页使用的字体中最具可读性.最易浏览的是
  • fastdwg插件
  • 认识iu
  • 打印缴纳社保电子缴税凭证
  • 百旺导入领购的新发票
  • 股权转让所得怎么申报
  • 江苏税务实名认证怎么更改
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设