- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
9秒学院总结cocos2d-x面试题.
1.autorelease和release的区别
release是立即释放引用计数,如果到达0,对象被销毁。
autorelease是延迟释放,是为了更好管理内存产生的。比如如下代码:
v
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,则直
文档评论(0)