31.场景切换的内存管理以及生命周期
生命周期事件顺序:
HelloWorld场景进入Setting场景生命周期事件顺序
32.简述cocos2d屏幕适配解决方案
屏幕分辨率,资源分辨率,设计分辨率
屏幕分辨率:以像素为单位的屏幕大小
资源分辨率:资源图片的大小,单位是像素
设计分辨率:逻辑上游戏屏幕大小,在游戏中精灵的位置便可以参考该值
资源分辨率到设计分辨率到屏幕分辨率,
SetContentScaleFactor();设置缩放因子,指资源大小和设计分辨率大小的比值,
setSearchPaths();设置搜索路径,每个路径下面有一套资源文件
setDesignResolutionSize();设计分辨率到屏幕分辨率,
33.常用的辅助工具
TiledMap(瓦片地图编辑器) ParticleEditor(粒子编辑器) Texture Packer(图片组合工具)
瓦片地图和图片组合的自己玩过...中间的没玩过 问我怎么玩 自己搜教程..
34.游戏启动是从哪个类开始的
AppDelegate类
35.cache机制的原理是什么
把新加进内存的资源做一个hashmap存储,每一个资源加一个key。每次加载资源的时候,先查找资源是否存在,存在直接返回,否则加载进内存。
36.掌握“2048”核心逻辑实现
这尼玛..就几个卡片动来动去...不多说了
37.autorelease和release的区别
release立即释放 autorelease将对象放入对象释放池引用计数并不马上减一,在一个消息循环后减一
38.moveto和moveby的区别
moveto是绝对的 移动到世界坐标的一个固定的点 moveby是相对的 是在原来的位置上相对移动一个向量。
39.简述cocos2d-x内存管理 图片缓存机制 自动释放池 自动释放池管理器
引用计数器——手动管理内存
自动释放池——自动管理内存
CCNode节点管理
静态工厂
Node在addChild时引用计数加一,removeChild时引用计数减一
__Array和__Dictionary等容器对象通过add(addObject)相关函数可以使得其中的精灵引用计数加一..
其他可以显式调用retain和release(或者autorelease)
一个retain一定要对应一个release或者autorelease
静态工厂
静态工厂创建方法,两阶段创建模式,分配内存与初始化分开
cache机制类
TectureCache纹理缓存,第一次使用一张图片有两步,一个是先将图片加载进TextureCache中,下一步是绘制图片,第二次使用这张图片时从缓存里找到这张图片,直接绘制
SpriteFrameCache
和textureCache一样,不过和TextureCache不同的是,如果内存池中不存在要查找的图片,他会提示找不到,而不是去本地加载图片。
AnimationCache
而对于使用频率高的动画,例如角色的走动、跳舞等,可以将其加入到AnimationCache中,每次使用都从这个缓存中调用,这样可以有效的降低创建动画的巨大消耗。
lamuda表达式:
auto listener = EventlistenerTouchOnebyOne::create();
listener -> onTouchBegan = [&](Touch* touch ,Event *event)
{
};