据说聊天室和游戏系统有很多相似之处, 并且很多游戏本身就带着多人聊天系统. 所以Pomelo将聊天室作为了一个例子.

开源是非常棒的思想和运动, 我简单提两点体会,
1.发现了问题可以不用等官方响应,自己有能力就可以马上修复. 2.你可以贡献自己的代码,很多人都可以贡献代码,可以让项目快速发展.
当然一旦你的代码被接受并被很多人使用, 心中的成就感是不言而喻的.

之所以要提到开源, 是因为今天我们要用到的东西基本上全部是开源的, 并且我们还要对其中的代码做一些修改才能正常工作. 再一次为开源鼓掌!

这并不是一篇Pomelo,或者Cocos2d-x的入门说明, 需要你对这两者都有一定的了解.
同时, 无论是Pomelo还是Cocos2d-x, 我都是新手, 如果文章中有错误的地方, 希望您能不吝指出.
您可以在文章下面留言, 或者在新浪微博上发微薄 @杨世玲
(需要说明的一点是, 请勿私信提问非隐私性技术问题, 我是希望您的问题, 我的或者其他朋友的回复,能被更多朋友搜索到,
我希望我们的交流, 能让更多朋友受到启发, 受益. 这也是对社区和世界和平的一点贡献吧.)

阅读全文 »

CCAutoReleasePool.h主要定义了两个类CCAutoReleasePoolCCPoolManager.

其实因为cocos2d-x自动管理内存的原因, 所以, 我们平时很少需要直接使用这两个类.
为了探究其中的自动管理内存的机制, 我们直接分析其代码.

总体上来讲, 内存管理这块的机制难度或许比较大. 我研究了一天, 还是有诸多疑问.
暂时先放一放, 待我功力进化后再来继续研究这块.

阅读全文 »

CCObject是绝大部分cocos2d-x类的基类, 我们就从这里一步一步揭开cocos2d-x的奥秘.

CCObject承担了两个重要的功能, 拷贝机制和内存管理.

##拷贝机制
打开CCObject.h 首先看到的是类CCCopying, 而CCObject是从该类派生. 从这个意义上来讲CCCopying才是大部分类的基类.
但CCCopying其实非常简单, 再加上没有其他类从CCCopying派生, 所以说CCObject才是大部分类的基类也是不错的. 我认为CCCopying仅仅是一个接口性质.

CCCopying这个类非常简单, 只有一个成员函数copyWithZone(CCZone *pZone); 简单到其实现只是为了报错. 尽管如此, 但其却承担了拷贝机制这一重要的功能.

cocos2d-x和cocos2d-iphone是近亲, 所以cocos2d-x在API上会和cocos2d-iphone保持一致, 代码上也多有借鉴. CCObject明显就有很多NSObject的痕迹.
当然我对Objective-c并不熟悉, 这里都是些猜测罢了. copyWithZone或许就是借鉴了Obj-c.

我们先来看下拷贝机制, 至于CCObject的代码倒不忙着看.

阅读全文 »

这一节也是很轻松, 主要是牵涉到Timeline的切换. 其他的都是简单的界面制作.
所以CocosBuilder的威力也体现在这里, 很少的代码就能驱动界面了.

我们这次先做Particle System, Scroll View, 最后以Animations收官.

#####1
制作Particle SystemScroll View的界面很简单,我们也是以程序为重点, 所以不再赘述.
只需要一句this->openTest("ccb/Scroll.ccbi");就可以调用新的界面了.
其他诸如绑定之类相信大家已经是轻车熟路啦.

阅读全文 »

今天要说的内容比较轻松, 重要的知识点不多.
目标是实现Menus & Items, Sprites & 9 Slice, Buttons & Labels.

#####1
首先我们在CocosBuilder中建立一个新的Header.ccb.具体请参见CocosBuilder的项目.
在创建的时候,勾选Full Sceen, 并且将分辨率的Height都修改为40.
这个文件很简单, 根节点下只包含一个CCLayerColor,根节点的Custom class设置为HeaderLayer.
CCLayerColor下面包含一个CCLabelTTFCCMenu.
CCLabelTTF的变量绑定为类型Owner var, 值为mTitleLabelTTF.
CCMenu包含一个CCMenuItemImage. CCMenuItemImageSelector属性设置为onBackClicked.
这个ccb作为一个公用的元素被其他ccb文件所引用. 是属于模块化的一个例子.
然后我们在Xcode中新建一个HeaderLayer类, 并同时声明一个HeaderLayerLoader类.

阅读全文 »

上一篇我们建立了基本的工作环境, 这一次我们将基本实现例子中的HelloCocosBuilder.

###注意
这两天纠结了一个问题. 我发现按照上次的配置来实现例子, 图片的大小怎么都和例子中的搭配不上. 后来动用CCB的源代码才看出端倪.
CCB v3.0加入了一个resources-auto的目录, 在发布的时候, 会自动缩放图片到对应的分辨率去. 因为图片的分辨率不合适(初步目测), 我们暂时不使用这功能. 请大家将上一篇文章
中的resources-auto文件夹下图片移到父目录ccb-source下面. 这个也解释了为什么resources-auto有非图片文件会导致CCB崩溃的原因.

阅读全文 »

CocosBuilder是Cocos2d系列的配套开源工具,最新的版本是3.0a, 也是我们这个系列文章所采用的版本.
CCB(CocosBuilder简称)目前只有OS X版本, 没有Windows的版本, 而且源代码也是用Objective-c, 估计移植难度会比较大.
我想这个也是其不够流行的原因吧.

如果你是CCB的熟客,那么你一定会记得CCB v2.x以前版本附带的例子. 而CCB v3.0采用了一个叫做CocosDragonJS的例子, 主要是展示CCB的Javascript的调用能力.
我虽然很喜欢JS, 但是正在学习2d-x, 又很想学好, 所以还是打好基础, 学好原滋原味的2d-x才好, 以后换用无论是Html5, 还是JS, Lua, 心里才会觉得踏实.
我无论C++,还是2d-x都是新手,又是第一次想正儿八经的写博客文章, 难免有很多错误, 还望各位看客踊跃拍砖.

这次的目的是基本实现原来v2.0中的例子.
我采用的2d-x的版本是:cocos2d-2.1beta3-x-2.1.0, 以OS X版本为主, 以sample目录下的HelloCpp为基础改进. CCB的版本是v3.0alpha0.

阅读全文 »

大概从7月20号左右, 开始决定转向游戏, 首先接触了cocos2d-iphone, 学习了几天. 然后简单了解下就转向了cocos2d-x的学习.

2d-x最令人开心的就是跨平台特性, 经过这段时间的尝试, 感觉跨平台特性确实很强大. 我一般都是在Xcode写代码, 以os x平台做调试, 然后ios平台就不用提了, 直接编译即可.
Win和Android下面一般都是直接编译即可. 当然, 因为我对C++也是刚刚开始学习, 所以代码写的不标准, 那么在VS下面会无法通过编译. 主要是体现在一些需要将函数作为参数传入的地方,
比较会不容易弄清楚回调函数的参数. Xcode我通通将CCObject *sender作为参数, 而VS要求就非常严格了.

阅读全文 »