位置: 编程技术 - 正文

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

  • 工业厂房房产税税率
  • 销售商品价格含税吗
  • 滴滴能出票吗
  • 现金流量表年报期末现金余额
  • 总公司分摊的分公司所得税
  • 房产空置怎么判定
  • 税收分类编码如何填写
  • 个人去税务局开劳务发票要交多少税
  • 餐饮定额发票可以用吗现在
  • 商铺租金收入税是多少税率
  • 政府补贴专项资金如何入账
  • 企业取得固定资产的方式有哪些
  • 通用定额发票能用吗
  • 机械租赁有什么机械
  • 汽车加油票可以开专票吗
  • 办公室电话费
  • 转让技术所有权是什么收入
  • 苹果哪些手机有120hz刷新率
  • win7怎么运行在哪里设置
  • 广告补贴申请报告
  • 发生股权转让时怎么处理
  • 如何在win7系统中查看电脑基本信息
  • 部分苹果iOS17功能延后推出
  • 跨年冲减无发票怎么入账
  • rtlcpl.exe
  • fsacder2e是什么文件夹
  • mch是什么文件
  • Vue3+element-plus 后台管理系统(含登陆注册功能页面)
  • php log函数
  • 纳税调整项目有一个其他调增金额是怎么组成的
  • vue ui怎么用
  • 商誉减值后
  • 【深度学习笔记】特征融合concat和add的区别
  • 阿里月薪3万到手多少
  • HTML 事件参考手册
  • cuppath
  • 微信php开发教程
  • 百旺金赋开票系统客服电话
  • 公积金提取条件资料
  • 研发费用大于收入
  • 残保金补申报后处罚会自动取消吗
  • 微信小程序实现支付功能
  • 资产负债表与利润表的关联性可在存货与销售成本
  • 营利性与非营利性的关系
  • 专门借款本金汇兑差额
  • 公司的车过户到个人名下需要什么手续
  • 小规模纳税人采购需要发票吗
  • 开具信用证的费用能开专票吗
  • 存货周转率越高好还是越低好
  • 个人所得税手续费返还政策文件
  • 非盈利社会团体可以开发票吗
  • 互联网企业资产评估
  • 开办费列支范围
  • 会计里面权益是什么
  • 结账时能否用红笔写名字
  • 房地产企业资产负债率的正常范围
  • mysql查询结果输出
  • centos vmware
  • centos7怎么变成图形化界面
  • FreeBSD su Sorry问题解决办法
  • etcfstab文件修改
  • 怎么删除swapfile
  • centos 终端
  • xp系统怎么删除电脑里所有东西
  • ControlSet001、ControlSet002以及CurrentControlSet之间有什么区别
  • win8补丁官网
  • osx 10.9
  • win7 开机动画
  • Win10系统如何使用虚拟光驱加载ISO镜像文件?
  • win7系统自带的截屏工具怎么打开
  • linux shell条件判断语句
  • android入门视频教程
  • JavaScript入门教程
  • easyui toolbar布局
  • 江苏国税电子税局
  • 河北发票查询真伪查询
  • 地方税务局和国家税务局合并
  • 电脑上怎么登录个人网络
  • 工商变更信息如何在网上打印?
  • 银元面值有哪些种类
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设