Cocos2d-x封装了3个类来处理HTTP请求: HttpRequest,HttpClient和HttpResponse. 常用方法包括下面几种: 设置请求连接 void setUrl(const char * url); 设置请求类型 void setRequestType(Type type); 这里的Type是Cocos2d-x
(不多解释啦,不知道的朋友请搜索) auto director = Director::getInstance();//获取唯一的导演 单例模式 导演对象的职责/作用 访问和改变场景 访问Cocos2d-x
这两个是类似的技术 世界坐标和模型坐标 由于OpenGL坐标有可以分为:世界坐标和模型坐标,所以Cocos2d-x的坐标也有世界坐标和模型坐标。
今天从 Python 跑偏,简略地介绍下另一个东西 -- Cocos2d-x。 Cocos2d-x 是一个开源的跨平台游戏框架,也是目前最流行的游戏引擎之一。 这就是现在的 Cocos2d-x(X 代表着跨平台)。它使得 Cocos2d 引擎的应用得到进一步拓展。 另一个是关于 Cocos2d-x 的作者王哲,他曾是第二届新概念作文大赛的一等奖获得者之一。同样拿过这个一等奖的还有韩寒(第一届)和郭敬明(第三届)。 之所以会说起 Cocos2d-x,一方面是因为这确实是一个不错的游戏引擎,如今手游市场方兴未艾。如果有人想涉足此行业,Cocos2d-x 绝对是一个很好的选择。 另一方面,也是因为我目前工作上的项目就是在使用 Cocos2d-x + Python。所以接下来有可能的话,也许会做一些 Cocos2d-x 的入门课程。
那玩家一定会掏出准备已久的西瓜刀~) 其实Cocos2d-x引擎早已为我们开发者封装好了多种数据存储的类或者方法,包括简单信息的存储,文件的读写,SQLite数据库和RAR格式的压缩文件的读取等等。 存入二进制数据 flush 将内容保存到XML文件 getXMLFilePath 获取XML文件的保存路径 isXMLFileExist 判断一个XML文件是否存在 具体的参数及详细的说明可以在Cocos2d-x 的UserDefaultAPI文档中查询(吐槽一句Cocos2d-x的文档真够差劲的,相比之下Egret的文档好很多。) Cocos2d-x中文件读写的方式和C++对文件的操作是一样的,先创建一个文件指针指向一个文件,然后打开这个文件,接着写入数据,最后关闭文件。 其实在Cocos2d-x中还有利用比如csv,json等保存数据的方法,但由于篇幅限制,本篇博客中我们就不再探讨了,以后的博客中会详细的介绍json和csv的操作。
Cocos2d-x精灵的性能优化-使用纹理图集和精灵帧缓存 使用纹理图集 纹理图集(Texture)也称为精灵表(Sprite Sheet) 使用纹理图集的优点: 1、减少文件读取次数,读取一张图片比读取一推小文件要快 虽然在Cocos2d-x v2.0后使用OpenGL ES2.0,它不会再分配2的几次幂的内存块了,但是减少读取次数和绘制的优势依然存在。 3、减少内存消耗。 4、Cocos2d-x全面支持Zwoptex和TexturePacker,所以创建和使用纹理图集是很容易的 image.png 这样一张大图,可以让美工来完成,但是记得需要记下坐标,图集中小图的左上角坐标是多少
Cocos2d 中一些验证正则表达式: 邮箱: #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) regex pattern("([0-9A-
锚点是定位和变换操作的一个重点。锚点我们可以看成用一根图钉将一张纸或者相片钉在墙上的那个点。 节点的位置是由我们设置的position和anchor point一起决定的。 值得一提的是,anchor point的默认位置Layer的是左下,而其他的node是中点。 节点的原点是父节点的左下角。 CCLayer* layer1 = CCLayerColor::create(ccc4(255,0,0,255), 300, 200); CCLayer* layer2 = CCLayerColor::crea
游戏存档功能能够保存游戏中数据。让玩家游戏能够延续。 单机游戏更为重要。而CCUserDefault能够作轻量级数据库使用,用来存储数据,支持数据类型bool,int, float, double, string.
在上一篇博客中,我们一起学习了如何在Cocos2d-x中存储数据和读取信息,本篇博客我们将一起讨论和数据存储同样重要的联网技术。 二、通过HTTP协议获取网站信息 在Cocos2d-x中使用HTTP协议传输数据的话,需要用到第三方库CURL。 在Cocos2d-x中通过GET\POST发送信息的方法也和web编程中的大同小异,下面我们就来了解一下。 地址:https://github.com/XINCGer/Cocos2d-X_Tools/tree/master/Cocos2d-x_Demo/WeakNetworking 好了,关于Cocos2d-x
想要实现子弹的的飞行效果,又不想在每帧Update里计算位置,最好的方法调用CCMoveTo
已准备条件: 已安装vs2012,已下载cocos2d-x sdk 2.2.3包。 7.打开项目到vs2012: 到文件夹D:\cocos2d-x\cocos2d-x-2.2.3\projects\mygame\proj.win32 中双击mygame.sln,即可以在vs2012或者
下面我们就来一起学习一下Cocos2d-x开发中那些不得不了解的C++11知识。 1.初始化列表 POD结构或者数组根据成员在结构内定义的顺序,可以使用初始化列表来进行初始化以简化代码。
cocos2d-x返回的点,是它在UI坐标系中的位置,使用CCPoint pt = pTouch->getLocationInView()获得UI坐标系中的坐标点,然后将其转换为OpenGL坐标系的坐标 只是获得该节点相对它的你节点的位置,所以convertToWorldSpace方法的调用应该如下所示: nodeParent->convertToWorldSpace(node->getPosition()) 关于cocos2d-x
使用cocos2d-x lua架构,游戏中存在两种内存回收方式。 1.cocos2d-x 本身内存回收 PS:假设在lua在创建一个类,继承cocos2d-x的一个类A,则该A也遵循cocos2d-x的内存回收方式 假设A没有被其它cocos2d-x的对象引用,或者调用
Cocos2d-x初学者教程 Cocos2d-x初学者教程 入门 分辨率设置 添加精灵 移动怪物 射击弹丸 碰撞检测与物理 画龙点睛 关于本项目在其他系统如Windows上的移植 参考资料 本文翻译自 Cocos2d-x初学者教程 在此Cocos2d-x教程中,学习如何使用C ++为iOS,Android等创建基本的跨平台游戏! Cocos2d-x是一种快速,强大且易于使用的开源2D游戏引擎。 它与Apple的Sprite Kit非常相似,但具有一个关键优势– Cocos2d-x是跨平台的。 有关Cocos2d-x如何处理分辨率的详细说明,请参阅Cocos2d-x Wiki关于多分辨率适配的条目。 添加精灵 接下来,下载该项目的资源文件并将其解压缩到方便的位置。 希望您喜欢Cocos2d-x,并从中获得灵感来制作自己的游戏! 要了解有关Cocos2d-x的更多信息,请访问Cocos2d-x网站以获取大量学习资源。
本篇博客讲解: 1.第一个Cocos2d-x游戏 第一个Cocos2d-x游戏 创建工程 cocos工具: 就是这个,看图 image.png 命令工具cocos实现,cocos return true; } //点击close菜单项来回调的 void HelloWorld::menuCloseCallback(Ref* pSender) { //Close the cocos2d-x
Cocos2d-x默认的场景切换过于简单。 不过 Cocos2d-x框架事先已经为我们准备好了一些换场动画,使用起来也很简单。
1、C++类和对象 类的公有成员可以使用成员访问运算符(.)访问。 (::)是范围解析运算符。调用成员函数是在对象上使用(.)运算符。 2、C++继承(C++中父类称为基类,子类称为派生类) class Man:public Person{ //your code is here }; 3、C++重载运算符和重载函数 函数重载:同名函数的形式参数(指参数的类型、个数、顺序)必须不同。 Box operator+(const Box&);//成员函数 friend Box
一 框架层面 二 Lua层面 三 工具层面 四 android打包 一 框架层 总体来说,cocos2dX提供的一个简便的框架,包括了渲染,动画,事件分发,网络还有UI,物理引擎等几大模块。对于做一个游戏从功能上来说已经 足够了。我从这几个方面分别探讨下cocos2dX的优缺点以及我们在项目中是怎样用到的 (1)渲染:渲染这块,他的渲染数据跟Sprite进行了绑定,然后对于openGl也是直接进行了调用,而不是採用策略或者插件进行调用。对于后期假设採用DX的话 我认为这块比較冗余些。可是这些并不会影响游戏的渲染速度。它提供了batch来进行批次渲染。所以在游戏里,我们对资源进行了分组,然后分别用textPacker 拼成一张图片,格式呢 没有alpha的採用 RGB565,有alpha的採用RGBA4444,要求高的话就採用RGBA8888,然后统一採用批次渲染。游戏的速度会提升非常多。 对于游戏数据的管理,cocos採用CCTextureCache这个单例类进行管理。释放能够採用所有释放,还有释放没实用过的。而且也提供了异步载入动画资源的方法 (PS:这个对于想做ARPG的同学来说,但是好东西了)。所以对于渲染这块,我们尽量用批次,然后记得释放内存就OK了。 (2)动画:cocos他提供了一套action机制。总体来说,是sprite run action。然后驱动action里面的动画数据,进行播放动画。全部的动画都能够走action 接口。对于使用者来说,也不用去关心其它东西,仅仅须要初始化好你想要的动作,然后把动作数据塞给action。然后让sprite run 就能够了。大概action就是这个 流程。本来我们想自己写自己的动画,可是到后期,由于自己写一套工作量大。所以对于move,scale什么的仍旧採用cocos自己的。仅仅有animation採用了我们的。 可是如今想起来,全然没有必要。cocos提供的已经足够了。我们所须要做的就是把动作编辑器导出的动画数据用cocos的动作翻译(对于动作编辑器我后面会讲)写 这么一个层就好 (3) 事件分发:cocos对于事件分发这块就比較弱了。他是事件管理是通过存储每个object以及他接收事件的优先级。然后进行分发。可是他并没有对场景进行树的管理 。所以我们的改变就是建立起场景树,然后事件分发先从场景顶端往下分发。期间每一个节点能够设置是否响应以及是否继续往下传递的属性(作为OC出身,这块全然模仿苹果那套) 全然丢弃了cocos的那一套事件分发机制。对于场景树的维护,仅仅须要每次step的时候更新下。所以对于查询性能须要好好写一下 (4)网络:cocos提供了对curl的封装。提供了http的一些简单比方get,post的封装。但对于断点续传等并没有封装。对于socket,cocos则全然没有提供。我们採用了 BSDSocket (5)UI:UI这边,cocos提供了几种简单的控件,比方CCButton等。他们都继承于CCSprite,可是太少。并且初始化方法是在是太过于奇葩。所以我们自己写了一套UI。 (事实上无非也就是 button,label,tableView,scrollView,image还有textInput)他们也都继承CCSprite。然后添�一些每一个控件独有的逻辑就能够了。最麻烦 的应该就是textInput了。照着cocos提供的input写一遍,然后改改。(cocos提供了CCEditeBox,可是这货的的解决的方法是在IOS上调用IOS的的控件。可是他是直接加到了egLView上,对于页面移动,页面关闭处理起来比較麻烦。 所以这个临时还不能用) 二 lua 为了让游戏更有灵活性,cocos提供了lua。由C++做引擎,然后lua去写逻辑。这样就能够绕开苹果的审核。我们就讨论下C++与lua碰到的问题。 (1)通讯:cocos採用了tolua++来进行C++与lua的通讯。看Cocos2dXLuaLoad文件中,那些就是lua与C++通讯的一个层。详细通讯原理比方是通过 栈,什么的我就不讲了(事实上我也不太懂)。这些东西tolua++都已经替咱封装好了。我们须要做的就是写好C++文件 然后生成load文件。在CCLuaEngine里调用你生成的那个load方法。lua就能够訪问C++了。须要说明的是,我们这边尽量是lua调用C++的方法,C++不会去调用 Lua的方法。调用也是通过callBack去调用。 (2)问题: 问题1.当C++里面的函数须要传递lua指针时:在C++里,lua的函数指针是一个int的 变量。生成时