位置: 编程技术 - 正文

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

  • 小规模企业所得税2023年税收政策
  • 非税收入票据能否税前扣除
  • 增值税审核表
  • 适用增值税零税率的有
  • 合并报表会计未分配利润怎么填写?
  • 企业裁员补偿金标准是多少
  • 累计折旧计入
  • 半成品委托加工费计入成本还是费用
  • 缴纳个税和社保
  • 写字楼注册公司对面积有要求吗
  • 员工福利费是不是加班费
  • 支付给对方的押金
  • 未认缴出资的股东退股
  • 广告位租赁交印花税吗
  • 贷款利息增值税发票
  • 普票开错了能退税吗
  • 开出技术服务费怎么结转成本
  • 企业开办费摊销期限的税法规定
  • 没发票大额费用支出能税前扣除吗?
  • 增值税发票确认时间
  • 一次性收取的租金怎么纳税
  • 公司名下的车怎么上牌
  • 英雄联盟登录失效怎么回事
  • 合并财务报表中的负债和股东权益
  • 资产减值损失期末余额在哪方
  • 冲减多计提的工会经费调账说明
  • win10平板模式怎么改回来
  • 汇票到期收到款项会计分录
  • 工程结算的编制方法
  • 收到发票未抵扣谁开红字
  • 路由器增强型
  • 工程款清欠管理办法
  • yii2框架结构
  • 商誉准则最新修订时间
  • 直运商品委托代销商品的销售成本的计算方法应采用
  • vscode调试在哪
  • 小规模纳税人企业所得税税收优惠政策
  • php获取指定日期的星期几的方法是
  • 增值税专用发票丢了怎么补救
  • yolov4配置
  • 数据模型 excel
  • 代付代缴社保会计分录
  • 企业资产的范围
  • mysql好在哪里
  • 以前年度损益调整结转到本年利润吗
  • 月末一般无余额的账户是( )
  • 非金融企业之间的借款合同要交印花税吗
  • 开多少平方超市赚钱
  • 刚成立公司没有发生业务,如何申报企业所得税
  • 基建期罚款支出账务处理
  • 铁路运费印花税谁承担
  • 小规模纳税人免税政策
  • 预计负债可以获取利润吗
  • 职工外地就医怎么报销
  • 什么资产减值可以转回
  • 坏账准备是什么类科目
  • 现金收款凭证的填制日期应当是
  • windows ssh-keygen
  • solaris 11.4
  • win10创建家庭
  • 文件夹隐藏属性怎么弄
  • WIN10系统中断
  • ulimit命令详解
  • 为什么调用不了函数
  • 批处理程序教程
  • android studio string函数
  • bat 截取字符串
  • linux 部署
  • linux 网卡 配置
  • 批处理延迟变量
  • public services翻译
  • Python回调函数注册类型不匹配
  • unity旋转角度范围限制
  • jquery 获取父元素的子元素
  • javascript word
  • 非贸付汇代扣代缴企业所得税
  • 国税补录信息怎么查询
  • 辽宁税务局代码是多少
  • 税务清查工作总结
  • 电子发票查询平台打印
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设