【游戏开发备注之一】解决Cocos2dx_v1.x版本图片白块,编译Android闪退等问题

简介:

今天备注几个童鞋们可能会遇到的问题:

1. 关于Cocos2dx v1.x版本运行在iphone与Android平台出现图片变白块,尺寸一样。图片纯白问题。

之前出现此问题原因如下:

     1.1  CCSprite与CCNode强转之间的问题造成;

1.2  pvr.ccz的资源大小宽高不是正方形的话(2 的N次幂)

解决方案,之前Himi给出方法了,这个问题请看之前的博文:

【iOS-cocos2d-X 游戏开发之十一】New CCSprite()带来的错误&使用CCUserDefault及pvr.ccz在Cocos2dx中要注意!

 今天讲解另外一个造成此问题的原因:

     原因引擎的粒子系统,当使用粒子系统后,控制台给出警告:

OpenGL error 0×0500 in -[EAGLView swapBuffers]

就因为这个问题会造成在打包好的图片白块化,实出的机型:Android平台M9,iOS:iphone 4.3.3

关于 这个错误的谈论帖子如下链接:http://www.cocos2d-x.org/boards/6/topics/7557?r=19039#message-19039

2.   Himi在cocos2dx 1.x版本运行在iOS6中调用GameCenter相关函数,出现如下错误:

(备注:此问题不仅仅使用GameCenter,ios6中其它也会遇到)

 

[cpp]  view plain copy
  1. Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and shouldAutorotate is returning YES'<strong style="color: rgb(255, 0, 0); ">  
  2. </strong>  

 

 

解决方案如下:

在调用使用GameCenter的 View Controller(报错的 View Controller类)中添加如下三个函数即可:

 

[cpp]  view plain copy
  1. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  
  2. {  
  3.   
  4. return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight );  
  5.   
  6. }  
  7.   
  8. -(NSUInteger)supportedInterfaceOrientations{  
  9. return UIInterfaceOrientationMaskLandscape;  
  10. }  
  11.   
  12. - (BOOL)shouldAutorotate  
  13. {  
  14. return YES;  
  15. }  

 

 

cocos2dx 一般对于ios平台级别的组件进行使用时,都默认写在cocos2dx项目下的ios文件夹下的AppController.h/mm 中的。当然你也可以自己定义mm混编类。

 

3. 第三个问题就是关于cocos2dx 1.x 版本编译Android 一个造成闪退的原因。

对于这个问题出现的种类很多(但是你如果书写代码规范基本没有任何问题),这里Himi给个遇到验证过的问题吧。

Himi 在cocos2dx项目中Xcode书写代码有如下两个类,继承关系如下:

HClassA:public CCSprte

HClassB:public HClassA

如果你强制将HClassA类型强制转给HClassB对象会造成Android闪退的问题!!!!

虽然这种父类强转子类在Java中可以行得通,在iOS运行没有问题,但是!当编译到Android的时候就会出现100%闪退的现象。

 

关于NDK编译到Android后的调试打印CCLOG与CCLog问题这里简单说下:

之前很多童鞋问我,为什么使用CCLOG在Android不打印,咳咳、童鞋们可以点击进入CCLOG的定义,它在正式编译后自动取消不打入代码中的,而CCLog则不是,所以我们想在Android进行打印观察,那么请使用CCLog 。

 





本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/1080630,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
存储 机器学习/深度学习 API
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
1015 31
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
|
8月前
|
XML Android开发 数据格式
Android利用selector(选择器)实现图片动态点击效果
本文介绍了Android中ImageView的`src`与`background`属性的区别及应用,重点讲解如何通过设置背景选择器实现图片点击动态效果。`src`用于显示原图大小,不拉伸;`background`可随组件尺寸拉伸。通过创建`selector_setting.xml`,结合`setting_press.xml`和`setting_normal.xml`定义按下和正常状态的背景样式,提升用户体验。示例代码展示了具体实现步骤,包括XML配置和形状定义。
395 3
Android利用selector(选择器)实现图片动态点击效果
|
人工智能 搜索推荐 物联网
Android系统版本演进与未来展望####
本文深入探讨了Android操作系统从诞生至今的发展历程,详细阐述了其关键版本迭代带来的创新特性、用户体验提升及对全球移动生态系统的影响。通过对Android历史版本的回顾与分析,本文旨在揭示其成功背后的驱动力,并展望未来Android可能的发展趋势与面临的挑战,为读者呈现一个既全面又具深度的技术视角。 ####
|
11月前
|
移动开发 安全 Java
Android历史版本与APK文件结构
通过以上内容,您可以全面了解Android的历史版本及其主要特性,同时掌握APK文件的结构和各部分的作用。这些知识对于理解Android应用的开发和发布过程非常重要,也有助于在实际开发中进行高效的应用管理和优化。希望这些内容对您的学习和工作有所帮助。
1167 83
|
8月前
|
Java Android开发
Android图片的手动放大缩小
本文介绍了通过缩放因子实现图片放大缩小的功能,效果如动图所示。关键步骤包括:1) 在布局文件中设置 `android:scaleType=&quot;matrix&quot;`;2) 实例化控件并用 `ScaleGestureDetector` 处理缩放手势;3) 使用 `Matrix` 对图片进行缩放处理。为避免内存崩溃,可在全局配置添加 `android:largeHeap=&quot;true&quot;`。代码中定义了 `beforeScale` 和 `nowScale` 变量控制缩放范围,确保流畅体验。
290 8
|
8月前
|
缓存 编解码 Android开发
Android内存优化之图片优化
本文主要探讨Android开发中的图片优化问题,包括图片优化的重要性、OOM错误的成因及解决方法、Android支持的图片格式及其特点。同时介绍了图片储存优化的三种方式:尺寸优化、质量压缩和内存重用,并详细讲解了相关的实现方法与属性。此外,还分析了图片加载优化策略,如异步加载、缓存机制、懒加载等,并结合多级缓存流程提升性能。最后对比了几大主流图片加载框架(Universal ImageLoader、Picasso、Glide、Fresco)的特点与适用场景,重点推荐Fresco在处理大图、动图时的优异表现。这些内容为开发者提供了全面的图片优化解决方案。
346 1
|
9月前
|
Java API 开发工具
Android cmdline-tools版本与最小JDK的关系
总的来说,Android的命令行工具和JDK之间的关系就像是一场舞会,两者需要彼此配合,才能共同创造出美妙的舞蹈。如果选择了不合适的舞伴(即不兼容的版本),可能会导致舞蹈中的步伐混乱,甚至无法完成舞蹈。而即使选择了合适的舞伴,也需要考虑舞伴的舞蹈技巧(即性能和稳定性),才能确保舞蹈的完美表现。因此,选择合适的Android命令行工具和JDK版本,是每一个Android开发者都需要面对的重要决定。
314 13
|
10月前
|
安全 开发工具 Android开发
【Android Git】Git版本回退方式
在实际操作中,选择合适的版本回退方式,可以有效地管理代码版本,提高开发效率和代码质量。
580 26
|
11月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
783 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
548 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库