和relea的区别
relea是当即释放引用计数,若是抵达0,对象被销毁。伦敦奥运火炬
autorelea是延迟释放,是为了更好治理内存产生的。比如如下代码:
v
CCObject *fun()
{
flash动画音乐
CCObject *myobj = new CCObject();
机制原理是什么
把新加进内存的资源做一个hashmap存储,每一个资源加一个key。每次加载资源的时候,先查找资源是不是存在,存在直接返回,不然加载进内存。
先构建新场景,然后显示新场景,然后释放旧场景。
可是在新场景onEnter,旧场景onExit的时候,会挪用旧场景的cleanup,清理schedule相关部份。
target(回调对象指针)加 lector(回调函数指针)。
6.还有减少内存开销的方式有哪些,图片紧缩方式有哪些
及时释放,减少泄露,重用资源,延迟加载,分部加载等。
一样的图片是4通道32位,即一个像素用4个字节表示,每一个字节依次表示ARGB,即alpha,red,green,blue。那么图片占用的内存能够算出。
紧缩像素即减少图片像素点多少,内存即减少。可是图片会变小。
紧缩图片质量,即不用4个字节表示一个像素,如256色,确实是用一个字节表示一个像素,每2个bit表示一个通道。可是图片表现成效变差。
PS:转换图片质量不能减少内存利用,比如把png换成jpg,缘故上面说的。
如何处置、存储、显示中文字符串,比如 玩家的名字,用户名,密码。存储在本地的文件里面,该如何处置才能避免不乱码?
利用 iconv 库进行转换。或XML 进行存储。
pEGLView->tDesignResolutionSize(480, 320, kResolutionNoBorder);第三个参数,找到概念:大学生素质
讲得很清楚了:
kResolutionExactFit:会靠拉伸来填满屏幕,本例来讲背景图会变形来填充屏幕,因为1024:768=, 480:320=,宽高比不同,图片也就无法等比缩放来填满屏幕,只能变形了。
kResolutionNoBorder: 看不到黑边,实际确实是宽高等比缩放,但缩放比例取宽比和高比当中大的那一个。
kResolutionShowAll:全数显示,能够明白得为保证内容都显示在屏幕之内,实际也是宽高等比缩放,但缩放比例取宽比和高比当中小的那一个。
一样来讲,咱们希望设计时一屏的内容,用户在实际设备上也能在一屏内看到,拿本例来讲,1024x768分辨率时,右下角的按钮却跑到屏幕外去了。看完上面的分析,你应该明白如何解决了: 对了,改变pEGLView->tDesignResolutionSize(480, 320, kResolutionNoBorder);第三个参数为kResolutionShowAll。应用题及答案
9.简述cocos2d-x内存治理,图片缓存机制
cocos2d-x最初移植自cocos2d的objective C版本。因此,在内存治理上,利用了和NSObject类似的引用计数器方式,相关接口放置在CCObject类中。
引用计数器——手动治理内存
CCObject的及其子类的对象在创建时,引用计数自动设置为1。以后每次挪用retain,引用计数+1。每次挪用relea,引用计数-1;假设引用计数=0,那么直接delete this。
retain是在指针传递和赋值时利用的,他的含义是表示拥有。这常经常使用在指针赋值上。
自动释放池——自动治理内存
关于利用autorelea的对象,没必要管它,每帧终止后会自动释放。
CCNode节点治理
cocos2d-x利用节点组成一棵树,渲染的时候要遍历这棵树。CCNode是所有节点类的父类,他内部利用了一个CCArray对象治理他的所有子节点,当对象被添加为子节点时,事实上是被添加到CCArray对象中,同时会挪用那个对象的retain方式。同理,从CCArray中移除时,也会挪用relea方式。
静态工厂
apply什么意思cocos2d-x中存在大量的静态工厂方式,这些方式中,全都对this指针挪用了autorelea函
数。
cache机制类
cache内部也利用了ratain和relea方式,避免这些资源被释放掉。
利用这些cache,咱们能够保留预加载的一些资源,在方便的时候挪用它,去绑定给一些对象。注意,这些cache在场景切换时,可不能自动删除,需要手动挪用purgeXXXX方式,进行清理。
10.简述cocos2d-x 与Cocos2d-x 版本有哪些区别? 版本的新特性.
以下提到即可
1
运用了C++ 11 的新特性,例如:
std::function
strongly typed enums
wakeupstd::thread
override
2
移除所有Object-c模式,删除CC前辍利用纯C++函数
3
所有的单例都利用2014高考满分作文getInstance() and destroyInstance()
4
创建新项目:
再也不需要创建Xcode模版,利用来创建一个跨平台的项目,利用方式
well done是什么意思中文 1,cd 到2dx根目录,MAC平台利用./ 然后提示:reception怎么读
-bash: ./: /usr/bin/evn: bad interpreter: No such file or directory
没关系,咱们打开.py文件,发觉其实引用的是tools/project_creator/ 这文件
2,咱们再cd 到project_creator文件中,利用 ./ -p <PROJECT_NAME> -k <PACKAGE_NAME> -l <cpp|lua|javascript>
3,如此咱们就能够够在2dx的projects文件夹中找到创建好的项目