文档章节

cocos2dx学习

y
 yizhangxyz
发布于 2016/01/31 15:17
字数 1386
阅读 187
收藏 0

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,指定绑定到几号纹理。

© 著作权归作者所有

上一篇: cocostudio学习
下一篇: BTREE,mysql索引
y
粉丝 2
博文 67
码字总数 42366
作品 0
成都
私信 提问
杨超 (wantnon)/EffectNodes-for-Cocos2dx

EffectNodes for Cocos2dx by yang chao (wantnon), 2014-6-26 EffectNodes for Cocos2dx is a collection of 2d special effects implemented with cocos2dx. i will add more when i got g......

杨超 (wantnon)
2018/05/09
0
0
cocos2d-x js模版修改

创建cocos2d-x项目,导入引擎模版,避免每次都拷贝引擎到项目中,修改路径: D:commonscocos2d-xcocos2d-2.1rc0-x-2.1.3templatemsvcCCAppWiz.win32Scripts1033下的js文件如下: // Additio...

石头哥哥
2013/08/04
266
0
cocos2dx在ubuntu下的eclipse中问题

刚开始学习cocos2dx,在创建Helloworld Demo程序时Android.mk中的$(call import-module, cocos2dx)前面有个红叉,我用的是cocos2dx-2.2.2,NDK_MODULE_PATH我配置了,在.mk中添加$(call impo...

没名
2014/01/14
198
0
Cocos2dx游戏开发系列笔记6:怎样让《萝莉快跑》的例子运行在vs和手机上

感谢听D同学赞助的Demo。 那怎样让它运行在vs中呢: 1 使用cocos2d-x-2.2toolsproject-creator文件夹中的create_project.py脚本,生成一个demo。 2 拷贝Classes和Resources文件夹到刚生成的d...

懒骨头
2013/12/09
1K
0
Cocos2dx游戏开发系列笔记1:一个崭新的开始,cocos2dx2.2+ndkr9+Cygwin

Android开发者做cocos2dx最大的绊脚石,不是c++,而是环境的搭建... 骨头也是费了半天劲才终于在真机上看到了那个类似猕猴桃的头,这里简单记录一下。 环境:(算比较新了2013.11.17) coco...

懒骨头
2013/12/09
390
0

没有更多内容

加载失败,请刷新页面

加载更多

JS 打印控制

JS 打印控制 var PrintStartString = "<!--打印开始标示符-->";//设置打印开始区域var PrintEndString = "<!--打印结束标示符-->";//设置打印结束区域var HtmlText = window.do......

DrChenXX
10分钟前
5
0
LevelDB:使用介绍

LevelDB 提供的接口其实很简单,下面举例进行简单说明。 安装 git clone https://github.com/google/leveldb cd leveldb mkdir -p build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. ......

slagga
15分钟前
5
0
《JavaScript正则表达式迷你书》读书笔记

正则基础 常见简写形式 字符组 具体含义 记忆方式 \d 表示 [0-9]。表示是一位数字。 其英文是 digit(数字) \D 表示 [^0-9]。表示除数字外的任意字符。 \w 表示 [0-9a-zA-Z_]。表示数字、大小...

muzi131313
20分钟前
4
0
Git的反悔操作

概述 这次主要来讲讲Git的反悔操作,自己平时在写代码的过程中经常会出现想要弃用所有的改动或回滚到上一次commit的情况。Git上的反悔操作有reset、rebase、revert等,每个操作各有区别和对应...

duduYZ
20分钟前
2
0
实现双向绑定Proxy比defineproperty优劣如何?

前言 双向绑定其实已经是一个老掉牙的问题了,只要涉及到MVVM框架就不得不谈的知识点,但它毕竟是Vue的三要素之一. Vue三要素 响应式: 例如如何监听数据变化,其中的实现方法就是我们提到的双向...

寻找海蓝
32分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部