cocos2dx学习

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之间


你可能感兴趣的:(cocos2dx学习)