位置: 编程技术 - 正文

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环境搭建)

  • 公对公打款开票
  • 增值税税控系统技术维护费怎么做账
  • 党建经费的标准
  • 租地建厂房合同
  • 处置可供出售金融资产取得的投资收益
  • 备用金被盗怎么找回来
  • 房地产开发临时用电
  • 非经营性费用包括哪些内容
  • 小企业会计准则和企业会计准则的区别
  • 购货方销售折让的会计处理
  • 增值税设备抵扣怎么抵扣
  • 购买软件的增值税可以抵扣吗
  • 七月一号出台的什么政策
  • 10万元以下免征教育费附加
  • 购车时服务费用怎么算
  • 外贸企业代理出口销售业务发生的费用
  • 工地没有手续擅自开工违法吗
  • 小微企业附加税怎么算
  • 处理固定资产怎么计算
  • 小规模季超过30,增值税怎么收
  • 苹果双系统不小心删了苹果系统
  • 华为微信铃声怎么设置不跟随系统
  • 基准收益率是
  • 滴滴公司的员工打车要钱吗
  • 培训机构开办资金
  • 苹果取消macbook
  • 部shu
  • 企业补缴个人所得税罚款
  • 追加投资会增加实收资本吗
  • 跨境服务免征增值税申报怎么填
  • 计提本月固定资产折旧会计科目
  • 试运行期间收入和成本怎么记账
  • 阿尔山火山
  • 其他综合收益要交企业所得税吗
  • 餐饮类的增值税
  • css元素居中的几种方法
  • tokenizer.encode、tokenizer.tokenize、tokenizer.encode_plus的用法差异
  • php 微信公众号自定义菜单
  • emerge命令
  • 在汇算清缴前未支付的年终奖不可以在所得税前扣除
  • 电子发票开出后如何查看
  • 外购产品的会计分录
  • 资产负债表可以反映的具体信息有
  • 收到普票和专票对企业的纳税影响
  • 企业自有房产的认定标准
  • 长期待摊费用为什么属于资产
  • 公司只有收入没有支出违法吗
  • 计提销售费用什么意思
  • 预计负债计提时调减还是调增
  • 租赁的生产设备计入哪个科目
  • 哪些计入研发费用
  • 银行打对公回单
  • 工程未完工开了发票怎么做账
  • 塑料行业税负率是多少
  • 没有发票的费用怎么报销
  • 安装sqlserver2000 IP地址出错怎样修改
  • mysql高级功能
  • 华硕主板如何刷系统
  • 怎么删除swapfile
  • Linux磁盘分区的作用
  • centos 3
  • win7系统怎样设置
  • win 10设置提醒
  • windows桌面卡
  • 我是如何从0开始做到年入1000+万的
  • Android游戏开发教程
  • 基于web的学生成绩管理系统毕业论文
  • 批处理 /b
  • python选择器
  • python 数独破解器
  • 批处理中copy怎么用
  • javascript高级程序设计第三版
  • 详解Python的collections模块中的deque双端队列结构
  • 税务举报偷税漏税电话
  • 江苏电子税务局社保缴费打印
  • 港股印花税什么时候下调
  • 小规模纳税人土地税减免政策
  • 苹果关税多少钱一个
  • 怎么登陆国税网
  • 小微企业怎么报增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设