![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
cocos2d-x 学习笔记
文章平均质量分 80
进击的大头
苦逼屌丝程序猿。。。http://blog.codingnow.com/
展开
-
cocos2d-x 源码剖析(11)
好久没用动笔写博客了,今天是1024节,还是要表示下。而且今天检查邮箱发现了5个垃圾评论,觉得很高兴,也要来篇文章庆祝下。哈哈。时间隔得太久,我都不记得我讲到那里来了。原来是打算将几个特殊点的Action为大家结尾,最后一看源码,发现有点杂乱,待我整理好之后再写。今天来讲一讲CCScheduler。之前讲过,在ActionManager创建出来之后立马就加入到CCScheduler中去了,然后转载 2014-03-10 14:26:17 · 771 阅读 · 0 评论 -
cocos2d-x 源码剖析(10)
上一节讲CCActionInterval,这节讲CCActionInstant。同样为了方便,我们用CCPlace来讲解。作为了解过CCActionInterval的过来人来说,CCActionInstant意外的简单。还记得这两种Aciton之间的区别吗?前者需要一个duration,而后者调用一次就介绍了,自然也不用什么持续时间了。翻看源码,可以发现CCActionInstant和CCActi转载 2014-03-10 14:25:37 · 787 阅读 · 0 评论 -
cocos2d-x 源码剖析(7)
上节讲了一下CCNode的绘制链,但是其中遗漏了一个重要的点。还记得我说的那个调用层次很深的那个函数吗?void CCNode::insertChild(CCNode* child, int z){ m_bReorderChildDirty = true; ccArrayAppendObjectWithResize(m_pChildren->data, child); c转载 2014-03-10 14:20:21 · 614 阅读 · 0 评论 -
cocos2d-x 源码剖析(19)
这节开始讲CCNode,之前讲过一部分,却是介绍cocos2d-x的其他的内容。毕竟CCNode太过基础,而且大范围使用,不一点一点讲也不太现实。在cocos2d-x的开发中,没有特殊的情况,我很少继承CCNode之外的类。很多情况下,我先选择继承CCSprite来添加一些逻辑,但是在几次尝试之后发现太过愚蠢。所以我总是选择使用CCNode来作为容器,包含一个CCSprite做显示,其他的代码来做转载 2014-03-10 14:48:05 · 650 阅读 · 0 评论 -
预加载+CCSpriteBatchNode + CCSpriteFrameCache
CCTexture2D *texture = CCTextureCache::sharedTextureCache()->addImage("showroom.png"); CCSpriteBatchNode *batchNode = CCSpriteBatchNode::createWithTexture(texture); addChild(batchNode);转载 2014-05-12 22:20:38 · 551 阅读 · 0 评论 -
cocos2d-x 2.2.0 如何在lua中注册回调函数给C++
cocos2d-x内部使用tolua进行lua绑定,但是引擎并没有提供一个通用的接口让我们可以把一个lua函数注册给C++层面的回调事件。翻看引擎的lua绑定代码,我们可以仿照引擎中的方法来做。值得吐槽的是,这套流程在开发中几乎是不可避免的,而cocos2d-x竟然不把它作为一个公用接口暴露给开发者,而需要我自己动手,真是无奈。下面以一个简单的消息分发类为例子,演示如何转载 2014-05-12 23:33:13 · 1065 阅读 · 0 评论 -
怎样制作基于Cocos2d-x的SLG游戏-第2章(双指缩放,单指拖动的实现)
上一章中,我们使用TiledMap制作了一张简单的地图,并把它加入到了程序中,紧接着本章将实现地图的双指缩放和单指移动功能。是不是觉得这一功能很接地气,呵呵,其实在很多类似的大地图背景游戏中这是非常常见和必要的一项功能,玩家可以通过滑动屏幕实现地图的滚动预览,同时可以通过两个手指的拉伸和聚拢实现地图背景的放大缩小。下面,就跟着我们一起来实现吧。双指缩放,单指拖动的实现转载 2014-09-12 17:22:03 · 2427 阅读 · 0 评论 -
状态机的实现
现在很多人在利用比较流行的开源游戏引擎cocos2d-x开发游戏,在游戏中免不了使用状态机,这里给大家一种我自认为好的状态机的实现O(∩_∩)O~。#ifndef BASESTATE_H #define BASESTATE_H template class BaseState { public: //BaseState(void){};转载 2014-10-06 23:33:21 · 501 阅读 · 0 评论 -
cocos2dx-多点触控
声 明 本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。gl.paea.cn版权所有。 hello,大家好,欢迎回到“和屌丝一起学cocos2dx”系列教程。上节我们说到了触控事件,不知道大转载 2015-01-08 17:09:24 · 516 阅读 · 0 评论 -
Cocos2d-x 使用TMX地图总结
首先我们需要知道,TMX地图的坐标为格子坐标,左上角为原点(0,0),而Cocos里面一般使用OpenGL坐标系,即左下角为原点(0,0)。我们可以这样子来转换TMX地图和OpenGL的坐标:Point HelloLayer::tiledCoorForPosition(const Point& position) //转成格子坐标{ Size mapSize = _t转载 2015-01-08 17:13:03 · 1032 阅读 · 0 评论 -
Cocos2d-x 详解坐标系统
这篇博文将介绍一下在cocos2dx中的一些坐标系统概念:一、 (1)OpenGL坐标系Cocos2D-x以OpenGL和OpenGL ES为基础,所以自然支持OpenGL坐标系。该坐标系原点在屏幕左下角,x轴向右,y轴向上。(2)屏幕坐标系屏幕坐标系使用的是不同的坐标系统,原点在屏幕左上角,x轴向右,y轴向下。iOS的屏幕触摸事件CCTouch传入转载 2015-03-16 21:54:55 · 389 阅读 · 0 评论 -
cocos2d-x 系统动画
Cocos2d-x提供的动画主要是瞬时动画和延时动画。瞬时动作就是不需要时间,马上就完成的动作。瞬时动作的共同基类是CCActionInstant。延时动作就是指动作的完成需要一段时间。因此,几乎所有的延时动作都使用执行时间作为第一个参数,它们有着共同的基类CCActionInterval。1.瞬时动画我实现x翻转和y翻转原图转载 2015-03-29 18:07:25 · 455 阅读 · 0 评论 -
cocos2dx shader应用——sprite变灰
借鉴了多位博主的代码,谢谢!~~分享精神!使用版本:cocos2d-x2.2.1在实际项目中,经常需要用到灰色图像。比如按钮变灰,一般情况下,我们需要准备三张图,一张正常颜色图,一张按钮按下图,一张按钮变灰图。若此种类似情况过多,就会导致资源包过大,这显然不是我们愿意看到的结果。此种情况下,我们就可以考虑修改程序的方法,实现正常颜色图变灰,就可以减少资源图。基于上述情况,我转载 2015-04-22 17:43:46 · 857 阅读 · 0 评论 -
如何制作一个基于Tile的游戏(2) Cocos2d-x 2.0.4
在第一篇《如何制作一个基于Tile的游戏》基础上,增加碰撞和拾取功能,原文《Collisions and Collectables: How To Make a Tile-Based Game with Cocos2D Part 2》,在这里继续以Cocos2d-x进行实现。有关源码、资源等在文章下面给出了地址。步骤如下:1.使用上一篇的工程;2.打开Tiled Map Edi转载 2015-04-08 18:35:40 · 453 阅读 · 0 评论 -
A* A星 算法 C语言 实现代码
【算法】【A星寻路】写在前面—— 如果转载请注明出处,谢谢大家支持 ——Forward 我的微博——秦京一梦QQ技转载 2015-04-13 21:05:05 · 1410 阅读 · 0 评论 -
CCClippingNode特性
从本篇起介绍一些cocos2d-x的新功能,包括CocosBuilder动画等功能,还包括从2.1版本添加的一些新特性,本篇文章就介绍一下2.1中我非常喜欢的一个新特性--可以根据一个模板切割图片的节点--CCClippingNode。这个类提供了一种不规则切割图片的方式,在这种方式以前,我们可以使用纹理类自带的setTextureRect函数来切割矩形区域,这种方式就像是J2me的setClip转载 2015-05-28 16:59:48 · 432 阅读 · 0 评论 -
cocos2d-x 源码剖析(9)
上一节讲了ActionManager,这节就顺势讲讲Action吧。下面是Action的继承图,这个结构看起来有点不对称,我也想不透作者是基于这种理由这样设计的,或许阅读晚源码之后会有所了解吧: 我们先从最简单的CCMove开始讲起。可以知道,CCMove继承至ActionInterval。ActionInterval有个特点,需要在一段时间内不断的调用step函数。与之对转载 2014-03-10 14:25:10 · 726 阅读 · 0 评论 -
cocos2d-x 源码剖析(8)
写到第7节的时候,突然觉得cocos2d-x还没有我想的那么大啊,或许在50节以内就要了结了。这节继续看看CCNode这个节点,主要部分是action。虽然CCNode有不少的action相关的函数,起作用的实际上是Actionmanager。这节虽说是从CCNode开始,但是真正的内容在ActionManager中:1234567891011121314151617181920212转载 2014-03-10 14:24:07 · 805 阅读 · 0 评论 -
cocos2d-x 源码剖析(15)
上节讲到了cocos2d-x在iOS上解压绝大数的图片格式为CCImage,然后再转化为纹理格式。其中有一个列外就是Webp格式。今天我们来看看Windows上面的情况,Android上的情况和Windows是类似的,都是使用第三方库来解码图片。按照道理来讲,Android上是可以采用类似iOS的技术,使用Android的系统库来解码图片,而且Android在4.0版本上已经开始原生支持Webp格转载 2014-03-10 14:32:22 · 1300 阅读 · 0 评论 -
cocos2d-x 源码剖析(16)
上一节讲了CCImage,这节讲CCTexture。毕竟我们就是从CCTexture讲岔到CCImage的。CCTexture负责纹理的加载和维护。他的函数分为三部分:初始化函数加载函数管理函数我们先来看加载函数,这是CCTexture的根本所在:12345678910111213141516171819202122232425262728293031323转载 2014-03-10 14:33:08 · 882 阅读 · 0 评论 -
cocos2d-x 源码剖析(14)
今天大老板看我加班辛苦,不由上来教育一番,我等屌丝立马重树三观。后又老爸介绍一相亲对象,虽说无甚期待也足够让想象里驰骋会儿了。心情略好,嗯来一篇吧。为了接上思路,我把前面几章看了一遍。自己水平不够,国语稀烂,新手要看懂确实不容易,老手也没必要看了。哈哈,略显尴尬。看个大概就可以了。好吧言归正传,自上一篇讲完Touch之后cocos2d-x的主逻辑就没什么类容了。我来整理下:co转载 2014-03-10 14:28:53 · 767 阅读 · 0 评论 -
cocos2d-x 源码剖析(2)
上次讲到cocos2d-x的main loop是下面这句:1cocos2d::CCApplication::sharedApplication()->run();我们来看看这个函数的内部实现:12345678int CCApplication::run(){转载 2014-03-10 12:47:39 · 695 阅读 · 0 评论 -
cocos2d-x 源码剖析(1)
原文出处:http://www.tsiannian.com/book/archives/34我认为在看这些文章的时候,最好有一些cocos2d-x的经验。起码能新建一个cocos2d-x的hello world工程。而且这些文章并不是用来入门和教你如何使用cocos2d-x的,我的目标是看完这些文章之后,写一个完整的2D引擎将没有问题。而且能够为cocos2d-x查漏补缺,看看那些是不转载 2014-03-10 12:46:33 · 976 阅读 · 0 评论 -
cocos2d-x 源码剖析(12)
今天来讲cocos2d-x的另外一个大头,Touch事件。由于cocos2d-x的多平台性,这部分有很多东西是用来支持多平台的。但是核心的东西还是只有一套。与之类似的东西前面讲过cocos2d-x程序的入口,还有后面要讲到的OpenGL Contex 也就是OpenGLView,这三部分紧密相连,而且随着平台特性不同而方式不同。总体上讲Desktop的方式都差不多,Mobile的方式也差不多。就用转载 2014-03-10 14:27:16 · 1010 阅读 · 0 评论 -
cocos2d-x 源码剖析(13)
今天暖手宝已到,就是键盘还不太熟悉。躺在床上写博客的感觉就是好啊。上篇讲解了不同平台的touch事件是如何进入到cocos2d-x的,现在来看看cocos2d-x是如何对其处理的。同样的道理,我们先看看handleTocuhesBegin中的代码:1234567891011121314151617181920212223242526272829303132333435363738394转载 2014-03-10 14:28:18 · 994 阅读 · 0 评论 -
cocos2d-x 源码剖析(5)
今天打开cocos2d-x的3.0-pre-alpha0 版本,突然发现里面的变量名全变了。原来是老式的匈牙利命名法,现在的我说不出来头,但是确实表示着代码规范更符合现代C++的使用理念。前5篇讲了下cocos2d-x程序的生命周期和主循环。现在需要深入到各个模块中去看看细节。我们先从CCNode开始讲起。介于我的网速比较慢,我决定先生成一份本地文档。为了方便大家,特在此记录下来。coco转载 2014-03-10 12:52:50 · 818 阅读 · 0 评论 -
cocos2d-x 源码剖析(6)
上节讲了一些CCNode中值得注意的函数,这节来讲讲CCNode的绘制链。这节的内容在整个cocos2d-x中是很重要的,因为绘制链不仅仅是为了绘制而已。正如前面看到的,cocos2d-x的绘制源头在主循环中的drawscene,而其中真正承当绘制任务的是:// draw the scene if (m_pRunningScene) { m_pRunni转载 2014-03-10 12:58:08 · 672 阅读 · 0 评论 -
cocos2d-x 源码剖析(17)
这节本来是打算接着上一篇发的,但是那天实在太晚了就拖了下来。没想到昨天在邮箱里面赫然发现了《炉石传说》的封测兑换码,节奏立马就变了。昨天和今天体验了一把,策略性很强,不过如果你玩到一定阶段就是拼人品和卡牌了。我相信之后《炉石传说》之后会加入四人对战模式,双人对战策略略显单薄了些。今天连胜五把,解锁了2个新英雄,来篇文章纪念下。上一篇其实还没有将CCTexture讲完。cocos2d-x在很转载 2014-03-10 14:38:26 · 832 阅读 · 0 评论 -
cocos2d-x 源码剖析(18)
这节来讲纹理管理。我这里说的纹理有两个含义,一个是OpenGL中的纹理,还有一个就是CCTexture的。CCTexture是OpenGL中的纹理呈现,所以说到纹理时大部分是指CCTexture了。上次说到,我们绘制时,可以使用CCTexture中的OpenGL索引也就是name来进行纹理绑定。而且cocos2d-x使用CCTextureCache来进行统一管理。CCTextureCach转载 2014-03-10 14:42:33 · 618 阅读 · 0 评论 -
cocos2d-x 源码剖析(20)
上一节讲到CCTextureAtlas,从名字上来看可能会有误导,其实他继承之CCObject而不是CCTexture2D。但是他内部却包含一个CCTexture2D。所有的内容都是由下面这两个成员变量展开的:CC_PROPERTY(CCTexture2D *, m_pTexture, Texture)CC_PROPERTY(ccV3F_C4B_T2F_Quad *, m_pQuad转载 2014-03-10 14:53:24 · 689 阅读 · 0 评论 -
cocos2d-x 源码剖析(21)
今天有个朋友在开发中遇到一个字符渲染的问题,原来cocos2d-x不支持LTR和RTL混合字符的渲染,我当初压根没有意识到还有这个问题的存在。跟踪之后发现,cocos2d-x确实没有支持,而且用ttf改起来颇为费劲,关键是实现逻辑的地方太深了,没有看到Android的情况,要做好移植很难。不过用bmf改起来还是比较方便的,能直接修改C++代码,不用关心底层,能很好的移植。但是现实起来还是要做不少工转载 2014-03-10 14:56:18 · 760 阅读 · 0 评论 -
cocos2d-x 源码剖析(3)
上两节讲cocos2d-x的启动并进入主循环的过程,这里还是讲这个,但是是用win32版本讲解。一方面可以巩固,一方面可以看看cocos2d-x是如果做到跨平台的。前面讲到c++的入口是main函数,但是windows下是_tWinMain。嗯,微软家的东西都是这个样子,就是有点不一样。注意main文件都是在xxx.proj目录下面的,因为平台不同,实现也不同,大家可别乱找啊。1234转载 2014-03-10 12:49:00 · 653 阅读 · 0 评论 -
cocos2d-x 源码剖析(4)
上一节我们初窥了cocos2d-x程序的大体结构,也看到了cocos2d-x在做多平台时候的一些技巧。如果读者能顺着这个路子,看看Android工程Linux工程的流程,感受恐怕会更深。而且这也是很值得学习的一部分,我在这里暂且搁置这段内容,因为还有更加基础的东西需要掌握。这节来看看mainLoop(void)中的drawScene()函数。作为一个2d游戏引擎,我想这个函数名字已经突出了转载 2014-03-10 12:49:57 · 620 阅读 · 0 评论 -
opengl之vsh、fsh简易介绍+cocos2dx 3.0 shader 变灰
认识着色器 理解OpenGL渲染管线,对于学习OpenGL非常重要。下面是OpenGL渲染管线的示意图:(图中淡蓝色区域是可以编程的阶段)此图是从wiki中拿过来的,OpenGL的渲染管线主要包括:准备顶点数据(通过VBO、VAO和Vertex attribute来传递数据给OpenGL)顶点处理(这里主要由Vertex Shader来完成,从上图中可以看出转载 2015-06-24 22:34:57 · 725 阅读 · 0 评论