



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.autorelease和release的区别 release是立即释放引用计数,如果到达0,对象被销毁。 autorelease是延迟释放,是为了更好管理内存产生的。比如如下代码:CCObject *fun() CCObject *myobj = new CCObject(); /myobj-release(); /语句1 /myobj-autorelease() /语句2 return myobj; 如果不调用语句1语句2,会导致内存泄露,根据函数定义原则,谁污染谁治理,如果要求外部调用者释放,不科学。 如果调用语句1,会立即被释放,外部调用者无法获取对象。 调用语句2,延迟被释放,可以保证外部调用者获得对象指针,而又会被释放。 autorelease的实现机制,是将对象加入一个pool统一管理,当pool被release时,pool里面每个对象都会被release。pool基于一个栈式结构管理,每一个mainloop会pop一次。同一个mainloop里面调用autorelease,会把引用加入栈顶pool。2.cocos2d-x的图形渲染机制是什么 只知道是每一帧调用mainloop,然后drawScene. 3.cache机制原理是什么 把新加进内存的资源做一个hashmap存储,每一个资源加一个key。每次加载资源的时候,先查找资源是否存在,存在直接返回,否则加载进内存。4.场景切换的内存处理过程是什么 先构建新场景,然后显示新场景,然后释放旧场景。 但是在新场景onEnter,旧场景onExit的时候,会调用旧场景的cleanup,清理schedule相关部分。5.动作回调函数是怎么作用的其原理是什么 target(回调对象指针)加 selector(回调函数指针)。6.还有减少内存开销的方法有哪些,图片压缩方法有哪些 及时释放,减少泄露,重用资源,延迟加载,分部加载等。 一般的图片是4通道32位,即一个像素用4个字节表示,每个字节依次表示ARGB,即alpha,red,green,blue。那么图片占用的内存可以算出。 压缩像素即减少图片像素点多少,内存即减少。但是图片会变小。 压缩图片质量,即不用4个字节表示一个像素,如256色,就是用一个字节表示一个像素,每2个bit表示一个通道。但是图片表现效果变差。 PS:转换图片质量不能减少内存使用,比如把png换成jpg,原因上面说的。7.cocos2d-x 如何处理、存储、显示中文字符串,比如 玩家的名字,用户名,密码。存储在本地的文件里面,该如何处理才能防止不乱码?使用 iconv 库进行转换。或者XML 进行存储。8.简述cocos2d-x的屏幕适配解决方案pEGLView-setDesignResolutionSize(480, 320, kResolutionNoBorder);第三个参数,找到定义:讲得很清楚了:kResolutionExactFit:会靠拉伸来填满屏幕,本例来说背景图会变形来填充屏幕,因为1024:768=1.3, 480:320=1.5,宽高比不同,图片也就无法等比缩放来填满屏幕,只能变形了。kResolutionNoBorder: 看不到黑边,实际就是宽高等比缩放,但缩放比例取宽比和高比之中大的那一个。kResolutionShowAll:全部显示,可以理解为保证内容都显示在屏幕之内,实际也是宽高等比缩放,但缩放比例取宽比和高比之中小的那一个。一般来说,我们希望设计时一屏的内容,用户在实际设备上也能在一屏内看到,拿本例来说,1024x768分辨率时,右下角的按钮却跑到屏幕外去了。看完上面的分析,你应该知道如何解决了: 对了,改变pEGLView-setDesignResolutionSize(480, 320, kResolutionNoBorder);第三个参数为kResolutionShowAll。9.简述cocos2d-x内存管理,图片缓存机制cocos2d-x最初移植自cocos2d的objective C版本。因此,在内存管理上,使用了和NSObject类似的引用计数器方法,相关接口放置在CCObject类中。引用计数器手动管理内存CCObject的及其子类的对象在创建时,引用计数自动设置为1。之后每次调用retain,引用计数+1。每次调用release,引用计数-1;若引用计数=0,则直接delete this。retain是在指针传递和赋值时使用的,他的含义是表示拥有。这经常用在指针赋值上。自动释放池自动管理内存对于使用autorelease的对象,不必管它,每帧结束后会自动释放。CCNode节点管理cocos2d-x使用节点组成一棵树,渲染的时候要遍历这棵树。CCNode是所有节点类的父类,他内部使用了一个CCArray对象管理他的所有子节点,当对象被添加为子节点时,实际上是被添加到CCArray对象中,同时会调用这个对象的retain方法。同理,从CCArray中移除时,也会调用release方法。静态工厂cocos2d-x中存在大量的静态工厂方法,这些方法中,全都对this指针调用了autorelease函数。cache机制类cache内部也使用了ratain和release方法,防止这些资源被释放掉。使用这些cache,我们可以保存预加载的一些资源,在方便的时候调用它,去绑定给一些对象。注意,这些cache在场景切换时,不会自动删除,需要手动调用purgeXXXX方法,进行清理。10.简述cocos2d-x 3.0与Cocos2d-x 2.X版本有哪些区别? 3.0 版本的新特性.以下提到即可1运用了C+ 11 的新特性,例如:std:functionstrongly typed enumsstd:threadoverride2移除了所有Object-c模式,删除了CC前辍使用纯C+函数3所有的单例都使用getInstance()anddestroyInstance()4创建新项目:v3.0不再需要创建Xcode模版,使用create-multi-platform-projects.py来创建一个跨平台的项目,使用方法1,cd 到2dx根目录,MAC平台使用./create-multi-platform-projects.py 然后提示:-bash: ./create-multi-platform-projects.py: /usr/bin/evn: bad interpreter: No such file or directory没关系,我们打开.py文件,发现其实引用的是tools/project_c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 涉外人士参与下的二手房买卖及过户手续协议
- 物业管理公司法律法规培训及风险防范协议
- 租赁居间协议范本适用于旅游民宿租赁
- 离婚协议书与财产分配及子女抚养权合同范本X3
- 离婚协议书范本:共同财产分割与子女赡养协议
- 离婚协议中婚前财产分割及子女抚养责任明细书
- 离婚协议书中关于子女教育经费的补充协议范本
- 矿产资源煤矿公司股权转让综合管理协议
- 专用设备制造保密及产品安全责任协议
- 2025年康复科考试试题及答案
- 2025兵团普通职工考试试题及答案
- 《中国老年危重患者营养支持治疗指南(2023)》解读 4
- 2025年广东国家公务员申论考试真题及答案-地市级
- 绿色矿山培训课件
- 国有企业十五五人力资源规划框架
- 无人机实操训练课件
- 十二大报告解读
- 血管内导管相关性血流感染预防与诊治指南(2025)解读
- 瓦楞纸箱基本知识培训课件
- 2025年安全培训《易制毒、易制爆化学品管理及应急预案》考试试卷(含答案)
- GB 26572-2025电器电子产品有害物质限制使用要求
评论
0/150
提交评论