我的Cocos2d-x学习笔记
文章平均质量分 83
箭已离弓
总想着自己写博客,可是网上写好的太多。所以就转载过来学习吧。
展开
-
我的Cocos2d-x学习笔记(三)游戏逻辑架构与HelloWorld分析
先来看看Cocos2d-x中关于游戏的一些基础概念,首先盗用官网的图描述一下游戏中各个游戏对象的关系。 从上图中可以知道在Cocos2d-x中只存在一个导演,而事实上之前我们也看到CCDirector是一个单例对象;而游戏中可以存在多个场景,图中存在N个场景;每个场景中又可以存在多个层;每个层中又可以包含多个精灵。 一个导演同一时间只能运行一个场景,一个场景当中,可以同原创 2015-05-26 13:24:15 · 722 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(二十二)CCTextFieldTTF (文字输入)、CCTextFieldDelegate(输入通知事件)
Cocos2d-x中提供了文本框控件CCTextFieldTTF实现文字输入功能。 CCTextFieldTTF预留了代理CCTextFieldDelegate处理通知事件。一、CCTextFieldTTF 类部分代码如下:class CC_DLL CCTextFieldTTF : public CCLabelTTF, public CCIMEDelegate{public原创 2015-06-06 21:48:50 · 754 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(二十一)内置粒子系统、使用粒子特效文件
一、简介在大自然中,随处可见一些大规模运动的物体,例如下雨时的雨点、下雪时的雪花、爆炸时的火花,甚至旋转的星系、扩散的云雾等。当我们希望在游戏中模拟这些大规模运动的物体时,通常有如下两种方法。Cocos2d - x中粒子系统由CCParticleSystem类实现,CCParticleSystem实现了对粒子的控制与调度。对粒子的操作包括:产生粒子:也称作粒子发射器。更新粒子状原创 2015-06-06 20:43:03 · 769 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(十九)CCString、CCArray
一、CCString代码如下:class CC_DLL CCString : public CCObject{public: CCString(); CCString(const char* str); CCString(const std::string& str); CCString(const CCString& str); CCString& operator=原创 2015-06-03 10:34:19 · 551 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(二十)音乐与音效
游戏中的声音:1、 音乐:通常长度长,适合做环境音乐,通常同一时刻只能播放一首音乐。2、音效:长度短,可以同时播放多个音效。Cocos2d-x提供了对音乐和音效的支持,实现播放、暂停和循环功能。一、包含所需的头文件与命名空间音效引擎库CocosDenshion与游戏引擎捆绑发布,却不属于游戏引擎的一部分。CocosDenshion位于Cocos2d-x目录下的” Coc原创 2015-06-06 19:04:38 · 854 阅读 · 0 评论 -
cocos2dx 常见的49中动作详解
bool HelloWorld::init(){ ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } CCSprite * sp= CCSprite::create("Icon.png");转载 2016-01-17 23:43:35 · 337 阅读 · 0 评论 -
cocos2d-x使用tinyxml2解析&存储xml
我用的是2.1.4的cocos2d-x,里面自带有tinyxml2库。好像2.1.0以上都有了导入头文件:#include "support/tinyxml2/tinyxml2.h" 一:创建xml并保存//要储存XML文件的路径 std::string filePath = CCFileUtils::sharedFileUtils()->getWrita转载 2016-01-18 16:42:28 · 448 阅读 · 0 评论 -
cocos2dx 3.X 触摸吞噬功能
对话框是什么,大家应该比较清楚。模态对话框就是当前对话框出现的时候不能对当前对话框以外的元素进行操作的一种对话框。cocos里面是不自带对话框的,所以需要自己制作。一般都是新建一个层,覆盖在当前场景之上。但是这时候常常会有一个问题,就是覆盖之后,下层的点击操作依然会被相应。这个问题我以前的做法比较naive(当然也是一种方法),就是每次把下层场景的控件都传到上层中然后 se转载 2016-01-11 14:44:45 · 452 阅读 · 0 评论 -
cocos2dx socket 通信
本文由qinning199原创,转载请注明:http://www.cocos2dx.net/?p=167最近做一个联网实时交互的游戏,游戏中需要使用socket保持长连接,来保证客户端与服务器端进行实时交互。以下贴出自己的一些代码:因为socket通信部分需要使用多线程,整个流程如下:1、首先起一个线程,来进行socket通信的连接[cp转载 2016-01-28 18:29:37 · 777 阅读 · 0 评论 -
Cocos2d-x获取系统时间(暂时)
//得到系统时间 CCString* HelloWorld::getSystemTime() { struct tm *tm; #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) //win32平台 time_t timep; time(&timep); tm = l转载 2016-01-13 01:27:50 · 395 阅读 · 0 评论 -
XML 新手入门基础知识
XML 是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分。您可以创建内容,然后使用限定标记标记它,从而使每个单词、短语或块成为可识别、可分类的信息。您创建的文件,或文档实例 由元素(标记)和内容构成。当从打印输出读取或以电子形式处理文档时,元素能够帮助更好地理解文档。元素的描述性越强,文档各部分越容易识别。自从出现标记至今,带有转载 2016-01-14 12:11:58 · 309 阅读 · 0 评论 -
cocos2d-x实例学习(9)之CCCardinalSplineBy
CCCardinalSplineBy概念这个类是样条曲线动作,其创建函数CCCardinalSplineBy::create(float duration, cocos2d::CCPointArray *points, float tension);中duration是时间间隔,points是控制点列表,tension是松紧程度。tension==1时,样条线是分段直线。tension1向内缩转载 2016-03-21 16:31:55 · 339 阅读 · 0 评论 -
cocos2d-x实例学习(11)之CCCatmullRomTo&CCCatmullRomBy
CCCatmullRomTo&CCCatmullRomBy概念CCCatmullRomTo:把某一对象以Catmull-Rom curve曲线移动到某一点。它的类继承图为: CCCatmullRomBy:把某一对象以Catmull-Rom curve曲线移动一段距离。它的类继承图为: CCCatmullRomTo&CCCatmullRomBy使用方式转载 2016-03-21 16:36:10 · 832 阅读 · 0 评论 -
cocos2dx的CCLabelTTF类使用不同的TTF字库时字体没有变化的问题
windows开发环境下,使用不同的字库文件,创建不同的CCLabelTTF对象时,发现显示字体并没有发生变化.比如:CCLabelTTF *ttf1 = CCLabelTTF::create("cocos2dx", "arial", 24);CCLabelTTF *ttf2 = CCLabelTTF::create("cocos2dx", "xxx", 24);发现两种字转载 2016-05-03 18:54:29 · 780 阅读 · 0 评论 -
Cocos2d-x教程-Box2D 物理引擎
欢迎加入 Cocos2d-x 交流群: 193411763转载时请注明原文地址:http://blog.csdn.net/u012945598/article/details/17787243Cocos2d-x 3.x版本物理引擎的使用参考 http://blog.csdn.net/u012945598/article/details/38417333转载 2016-05-19 13:28:21 · 512 阅读 · 0 评论 -
BOX2D 自然的旋转到一个指定角度
在BOX2D 中如何控制body 自然的旋转到一个指定角度?这个问题在许多游戏中控制角度时都会遇到,但是在BOX2D中,你必须考虑到如果转动中与其他body碰撞等物理因素。能够想到的解决方案有三种:1 在update方法里不断更改body的角度,使他接近于要设定的角度。 b2vec2 clickedPoint;//设定点的向量float bodyAngle =转载 2016-05-19 14:36:02 · 417 阅读 · 0 评论 -
BOX2D 自然的旋转到一个指定角度
在BOX2D 中如何控制body 自然的旋转到一个指定角度?这个问题在许多游戏中控制角度时都会遇到,但是在BOX2D中,你必须考虑到如果转动中与其他body碰撞等物理因素。能够想到的解决方案有三种:1 在update方法里不断更改body的角度,使他接近于要设定的角度。 b2vec2 clickedPoint;//设定点的向量float bodyAngle =转载 2016-05-19 14:36:45 · 1281 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(二十三)数据持久化之CCUserDefault
一、CCUserDefault简介CCUserDefault是Cocos2d-x提供的持久化方案,其作用是存储所有游戏通用的用户配置信息。CCUserDefault可以看做一个永久存储的字典,本质上是一个XML文件,将每个键及其对应的值以节点的形式存储到外存中。由于每次设置和读取都会遍历整个XML树,效率不高,值类型也有限,适合小规模使用。系统会在默认路径cocos2d -原创 2015-06-07 00:08:52 · 641 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(十七)CCProgressTo
Cocos2d-x提供了进度条动作,该类继承CCActionInterval。继承关系如下:在使用CCProgressTo时还需要CCProgressTimer。在CCProgressTimer类中,仅仅只有一个create函数用来创建,其参数是一个精灵,如下:static CCProgressTimer* create(CCSprite* sp);CCProgressTi原创 2015-06-03 09:54:18 · 495 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(二)AppDelegate补充介绍
上一篇中只介绍AppDelegate中applicationDidFinishLaunching()函数,这个函数是程序运行的关键,在CCApplicationProtocol中声明纯虚函数,在CCApplication中进行调用。在CCApplicationProtocol中与applicationDidFinishLaunching()类似的纯虚函数还有两个,分别是:applicationDi原创 2015-05-26 11:17:56 · 508 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(六)坐标体系与锚点
在游戏中坐标系统是少不了的,坐标涉及到各种游戏元素的布局,是必须掌握、搞清楚的重点!笛卡尔右手坐标系:定义:原点在左下角,x轴向右,y轴向上,z轴向外,OpenGL与Cocos2d-x坐标系都为笛卡尔右手坐标系。OpenGL坐标系:该坐标系原点在屏幕左下角,x轴向右,y轴向上。Cocos2d-x坐标系:与OpenGl坐标系一样。屏幕坐标系:该坐标系的原点在屏幕左上角,x原创 2015-05-26 23:24:15 · 585 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(七)纹理缓存、帧缓存、精灵的创建、zOrder
缓存原创 2015-05-27 15:06:37 · 4094 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(一)Windows下程序如何开始运行
现在开始学习Cocos2d-x开发手机游戏,做这个笔记记录学习中的一些收获,同时利于复习。利用的Cocos2d-x2.2.6引擎。 每个程序都是有入口函数的,Cocos2d-x也不例外,在Windows下的VS开发环境中,入口函数在Win32筛选器下的main.cpp中。我们看一下main.cpp文件中内容。#include "main.h"首先包含了main.h头文件,头文件中包含原创 2015-05-25 23:20:51 · 542 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(五)CCLayer、CCLayerColor、CCLayerGradient、CCLayerMultiplex
之前仅仅学习了CCLayer,但是关于层的并不仅仅是这些,还有另外的一些,例如:CCLayer、CCLayerColor、CCLayerGradient、CCLayerMultiplex。首先复习一下CCLayer:CCLayer的继承关系:由CCLayer的继承关系就可以知道此类可以接受触摸操作,重力加速度计,输入。CCLayer 类总仅包含CCLayer *CCLaye原创 2015-05-26 21:11:34 · 714 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(四)场景转换特效
首先看一下之前介绍过切换场景的代码:CCScene* pScene = TestLayer::scene();CCDirector::sharedDirector()->pushScene(pScene);CCDirector::sharedDirector()->popScene();CCDirector::sharedDirector()->replaceScene(pScene);原创 2015-05-26 20:09:14 · 566 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(八)利用CCSpriteBatchNode进行优化
OpenGL是一个基于C语言的三维图形API,是一个开放的、跨平台的图形接口。OpenGL ES是OpenGL在移动设备上的版本。Cocos2d-x是一个基于OpenGL的游戏引擎,渲染功能由OpenGL实现。游戏中会用到许多图片资源,对图片资源渲染进行优化能明显提高效率。OpenGL中纹理的长和宽像素是2的幂,大小不足的纹理补充到2的幂大小;可以通过把多张小图片合成一张大图加载到原创 2015-05-29 00:21:02 · 634 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(十)定时调度器(scheduleUpdate、scheduleOnce、schedule)
Cocos2d-x中定时调度器一共有三种:scheduleUpdate、scheduleOnce、schedule。定时调度器在CCNode中声明:class CC_DLL CCNode : public CCObject{public: void scheduleUpdate(void); void schedule(SEL_SCHEDULE selector, float in原创 2015-05-29 23:27:33 · 1049 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(十四)菜单(CCMenu)、菜单项(CCMenuItem)及菜单项子类
一、菜单(CCMenu) Cocos2d-x提供了菜单功能,学习具体菜单项之前需要先了解一下CCMenu。 CCMenu是Cocos2d-x的菜单类,本身不具备菜单具体属性,将一些具体类型的菜单添加进去达到添加菜单的目的,可以说它是一个容器;在Cocos2d-x中使用菜单功能首先要创建这个容器,之后把我们创建好的菜单项(CCMenuItem)添加到CCMenu容器中,此时才可以原创 2015-05-31 16:19:04 · 1008 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(十一)触摸、触摸优先级
Cocos2d-x默认只有CCLayer及其派生类才有触摸的功能。CCLayer中关于触摸的部分代码如下:class CC_DLL CCLayer : public CCNode, public CCTouchDelegate, public CCAccelerometerDelegate, public CCKeypadDelegate{public: virtual void s原创 2015-05-30 00:21:11 · 1135 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(十三)CCLabelTTF、CCLabelAtlas、CCLabelBMFont
Cocos2d-x中添加标签一共有三种方法:CCLabelTTF、CCLabelAtlas、CCLabelBMFont,我们逐一学习。一、CCLabelTTFCCLabelTTF类中部分代码如下,其中都是常用的函数:class CC_DLL CCLabelTTF : public CCSprite, public CCLabelProtocol{public: sta原创 2015-05-30 22:34:51 · 691 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(九)游戏帧循环(游戏主循环)
游戏运行时候会不断按照游戏逻辑规则重新绘图,反复处理用户输入、处理定时事件、绘图,直到游戏结束。 Cocos2d-x引擎也是通过不断绘图来进行游戏的,默认的帧率在AppDelegate.cpp中显示为60帧每秒,也就是每秒执行了60次用户输入、定时时间、绘图等。抄录Cocos2d-x高级教程中内容如下: 游戏乃至图形界面的本质是不断地绘图,然而绘图并不是随意的,任何原创 2015-05-29 20:51:37 · 592 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(十二)内存管理
C++内存管理: 栈上的空间:不用程序员手动管理。 堆上的空间:new申请的空间需要用delete来释放,否则产生内存泄漏。过程型函数:函数中每条语句执行完毕后,返回到调用此函数的地方。注册型函数:注册型函数把此函数注册到某个地方后立即返回,该函数不立即执行,等待注册到的地方来执行该函数。内存的两种智能管理:主要有两种实现智能管理内存的技术,一是引用计数,一是垃原创 2015-05-30 16:33:41 · 531 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(十五)CCControlSlider、CCControlSwitch、CCScale9Sprite、CCControlButton
学习几个UI控件,CCControlSlider、CCControlSwitch、CCControlButton,它们都来自Cocos2d-x扩展库。使用UI时候需要包含扩展库头文件与命名空间,如下:#include "cocos-ext.h"USING_NS_CC_EXT;CCScale9Sprite需要:#include "cocos-ext.h"using names原创 2015-06-01 00:19:49 · 1012 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(十六)动作
一、简介:继续引用高级开发教程:CCAction 作为一个基类,其实质是一个接口(即抽象类),由它派生的实现类(如运动和转动等)才是我们实际使用的动作。CCAction 的绝大多数实现类都派生自CCFiniteTimeAction,这个类定义了在有限时间内可以完成的动作。由CCFiniteTimeAction 派生出的两个主要类分别是瞬时动作(CCActionInstant)和持续性动作(原创 2015-06-02 17:11:39 · 600 阅读 · 0 评论 -
我的Cocos2d-x学习笔记(十八)CCGridAction
CCGridAction实现一些格子动作效果。继承关系如下:实例: CCSprite * spr = CCSprite::create("HelloWorld.png"); spr->setPosition(ccp(200, 200)); addChild(spr); //GridAction //CCFlipX3D * action = CCFlipX3D::create原创 2015-06-03 10:13:45 · 500 阅读 · 0 评论 -
Cocos2d-x与OpenGL底层的感想
1.为什么会卡顿这篇文章想写一些工作经常碰到的一些问题,为什么我做一个2D游戏,渲染100多个精灵就会卡。他们同样是做2D游戏,为什么渲染那么多东西帧数非常高,一点卡顿的样子都没有?这里我们排除一些逻辑因素,在相同游戏逻辑复杂度下。我每帧也没什么逻辑运算也还是卡,这里我们首先排除掉CPU对于游戏帧数瓶颈的限制。我们来谈下,为什么都是2D游戏,我渲染那么少的东西就会卡。其他游转载 2017-06-24 13:53:02 · 695 阅读 · 0 评论