左轮

我是一把手枪

C++11 – 新特性

在cocos2d-x 3.X之后的版本中,可以看到很多关于c++11新特性的使用,这篇文章学习记录下c++11的新特性及使用方法。

auto

变量初始化

在c++11中,我们可以想其他动态语言一样,不需要指明一个变量的具体类型,直接对变量进行声明初始化。

1
2
3
auto i = 10;
auto str = "hello world";
auto p = Sprite::create("CloseNormal.png");


这样在声明变量时,我们不需要指明变量的具体类型,但是在使用auto时,我们必须对变量赋值。同时我们还可以使用在STL的迭代器中,使得代码更加简单易读。

Cocos2d-x – TableView

TableView是在游戏开发中最常使用的之一,它是ScrollView的子类,采用委托代理,只将数据交给用户处理,具体布局,内存处理都有引擎包装完成,对于加载大量列表数据非常方便,使得我们只需考虑,每个条目数据处理。
TableView位于extensions扩展包中,所以在使用的时候需要引入头文件。

1
2
#include "cocos-ext.h"
using namespace cocos2d::extension;


在使用TableView的类中,需要继承TableViewDataSourceTableViewDelegate两个类。这两个类中定义了一些纯虚代理方法,需要在类中继承实现,还有其他的几个方法,可以选择实现。

Cocos2d-x – LuaEngine调用Lua代码

cocos2d-x 3.2中,在命令行生成新项目时,我们需要使用-l参数指明使用的语言,如果使用c++语言,则默认不包含脚本库,如果使用lua语言,则项目默认生成lua环境,我们直接可以开始编写lua逻辑,无需关心引擎到lua的调用工作。为了了解引擎如何从c++调用到lua,z这篇文章以c++项目为例。

Lua – Stack

c++调用lua中一个很重要的概念就是栈,它是c++与lua交互的基础,所有的调用都是在这个栈上来完成的,所以我想在这片文章中记录下我对栈调用的一些理解。之前有读过子龙山人的关于lua文章,这里使用他的配置,具体见这片博文:Lua教程: C++嵌入Lua脚本(1),我也是按照这篇博文进行配置,使用的lua版本为5.2.3。

Cocos2d-x – Tinyxml2

tinyxml2是一个简单,高效的xml语言的库,它是一个开源项目,项目代码托管在github上,这个是它的github地址: tinyxml2,在cocos2d-x中,已经集成了tinyxml2库,所以在使用的时候我们只要引入相应的类就可开始处理xml文件。在cocos2d-x中我们经常会用到的CCUserDefault操作者本地的一个xml文件,其实内部实现就有封装tinyxml2来实现的。

Cocos2d-x – Http请求

cocos2d-x的网络请求相关代码是放在network目录下的,所以在使用的时候,首先要导入头文件。
newwork目录下主要由这几个类

  • HttpRequest
  • HttpResponse
  • HttpClient
  • SocketIO
  • WebSocket

这篇主要总结下Http请求的处理过程。

Cocos2d-x – Jni调用

cocos2d-x要在android手机上运行,就需要在java和c++两种语言之间进行调用,在cocos2d-x中完成这个任务的就是jni,它可以使两者之间互相调用,从而让用c++开发的cocos2d-x游戏,在android上完美运行。
cocos2d-x中封装了JniHelper类,方便通过c++来调用java方法,此类位于platform/android/jni/目录下,先来看看这个类都提供了哪些方法。

Cocos2d-x – 多分辨率适配

多分辨率适配一直是cocos2d-x游戏关注的一个重点,所以搞清楚cocos2d-x适配方案尤为重要。
假设不存在多分辨率适配问题,只有一种分辨率,那我们就为该分辨率设计大小和屏幕一样的图片就OK了,但是因为现在市场手机大小不一,苹果及安卓分辨率各种大小应有尽有。

Cocos2d-x – 渲染流程

因为现在并不了解OpenGL ES的渲染过程,这里只能简单理清整个cocos2d-x 3.2版本的渲染顺序及调用过程,具体OpenGL ES实现,之后会学习总结。
在3.0之前的版本中,cocos2d-x渲染每个节点都是放在节点的draw()方法中直接调用OpenGL命令来进行渲染的,比如2.2.5中的CCSprite::draw()

Cocos2d-x – 内存管理

cocos2d-x采用引用计数来对内存进行管理。在2.X版本中,所有类都继承CCObject类来完成内存的管理,而在3.X版本中,cocos2d-x将管理引用计数的内单独了处理命名为Ref,在这个类中对引用计数进行操作。