1.cocos2dx启动界面,图片是Default.png
2.TranstionFade:场景切换效果
3.添加元素在init里面,不要在onenter里面
4.TMXTileMap:瓦片地图,通过.tmx来创建地图
5.GUIReader:从json文件加载ui控件
6.SpriteFrameCache通过加载plist和png创建图片的frame cache,通过CreateWithSpriteFrameName(“xx.png“)从帧缓存中查找图片来创建sprite
7.Sprite->loadTexture(“xx.png”,Widget::TextureResType::PLIST)可以从图片帧缓存中加载纹理
8.EaseSineOut:动作由快到慢
9.Node现在有pause(),可以让node停止update()。
10.Cocos2d3.0新增加的特性Value,表示任意普通类型
11.Ui和动画的加载
Ui的话直接从json文件创建就是了
动画的话先要加载动画json文件,然后创建骨骼动画,不用的时候记得要移除动画json文件
12.Animation,其实是由许多精灵帧构成(精灵帧表示为:AnimationFrame,可以通过getSpriteFrame获取到cocos2d的spriteFrame),可以设置播放持续时间等动画相关属性。要生成一个动画步骤如下:
通过一个animation创建一个Animate,Aniamte* action = Aniamte::create(animation);Animate实际上是一个action
sprite->runAction(action);
13.cocos2dx各种Size
frameSize,手机的分辨率,这是不变的(图中为HIJK)
winSize,设计分辨率,相当于游戏设计的逻辑大小。可以将frameSize理解为画框,winSize为画布
visibleSize就是画布在画框中额部分,大小其实是用winSize来表示的
visibleOrigin就是visibleSize在画框中的左下角坐标点
如下示例:
FrameSize:假设为width = 720, height = 420
WinSize:假设为width = 360, height = 240
在kResolutionNoBorder模式下,实例图像如下:
此时的VisibleSize就是HIKJ,此时的VisibleSize为Width = 360, height = 210。
因为FrameSize的长宽比为 720 :420 = 360 :210,而我们的设计分辨率为 360 :240,所以在kResolutionNoBorder模式下,被画框截下来的设计分辨率就为360:210
此时的VisibleOrigin就是在VisibleSize中的K,坐标为(0,15),右图中可以看出 15 = (240-210)/2
14.屏幕适配, glview->setDesignResolutionSize设置的是一屏内显示的像素数量,即winSize的大小。
kResolutionNoBorder:超出屏幕被剪裁,铺满屏幕
kResolutionShowAll:会按照原始比例进行缩放,2侧可能有黑边,不铺满屏幕
kResolutionExactFit:2边都铺满,图片会变形。
15.字体:
ttf字体,别人做好的字体,需要在网上找,然后放到Resources文件夹下面
fnt可以自己制作字体
16.cocos2d自己的vector具有自动对Ref添加移除引用计数的功能。
17.rotation顺时针旋转为正,逆时针为负
19.可以一批次渲染的要求:shader,混合函数,纹理id必需全部相同
20.3.x版本增加了 localZorder 和gloabalZorder的概念。
21.shader的使用:
加载shader源文件,glCompileShader生成vertex和fragment shader,再glLinkProgram链接shader。不用的时候要glDeleteShader。这些都是封装在cocos2dx的GLProgram里面的。
在使用的时候通过glUseProgram来加载shader
3.x版本再通过glprogramstate来管理node的glprogram
GLProgram是通用的,而GLProgramState是每个node私有的,存放了uniform值
22.sprite默认的shader:
ccShader_PositionTextureColor_noMVP.vert ,接收顶点信息,只是将顶点坐标做常规转换(传入的顶点坐标*传入的矩阵),有2个varying变量接收顶点颜色和纹理坐标
ccShader_PositionTextureColor_noMVP.frag,根据上面传入的纹理坐标采样纹理颜色,再乘以顶点颜色,得到最终颜色
23.TextureAtlas,纹理集,通过一个纹理创建,并初始化容量。通过添加纹理多边形描述(1个quads),一次性渲染。只能公用一个shader和混合函数
24.Cocos2dx的3d知识:
有一个Sprite3D,可以通过2中方法创建:
a 通过.obj,.c3b,c3t文件 (obj是静态模型,不支持动画,c3b和c3t是动画,c3b是二进制文件,c3t是json文件)。这三种文件其实是通过将3dmax的fbx文件通过自带工具转换的
b 不带素材的.obj文件,自己设置素材
25.spriteframeCache缓存小图像的时候,key是图像名字,非全路径。所以注意图片命名
26.clampf(float value, float min_inclusive, float max_inclusive)将value限制在min_inclusive和max_inclusive之间
27.mipmap用于解决纹理映射时,在不同分辨率下的适应问题。比如同一张纹理显示在10*10或者20*20...的情况下不至于失真。它实现的原理是存储多种纹理尺寸,在映射的时候选择一张最合适的进行映射。这样可解决图像的闪烁,并且解决大纹理显示的效率问题。但同时会造成内存使用变大的问题。glGenerateMipMap用于产生mipmap。
28. cocos2d的纹理,在生成的时候就将纹理数据推送到opengl缓存区域。在Texture2D内部只保留了一个opengl纹理数据的索引。在删除纹理的时候,只需要将opengl缓存的纹理数据删除。
29. 3.2版本的cocos2d在判断图片格式的时候已经不再使用文件后缀名了。而是通过判断图像的头数据。
30.在cocos2d的shader在执行compileShader的时候会加上几个常用uniform,比如mvpMatrix,CC_Texture0。在fragshader中进行纹理采样:texture2D(CC_Texture0, v_texCoord)。注意CC_Texture0的值为0。opengl允许同时使用多张纹理。激活纹理的方式是:glActiveTexture(激活第几号纹理)。cocos2d默认绑定到0号纹理。当然也提供了bindTexture2DN,指定绑定到几号纹理。