小满(bill man)的专栏地址http://blog.csdn.net/bill_man
想学coco2d的 他的博客 很好 很强大
转载来的
和学习任何新技术是一样的,我们首先从helloworld开始,cocos2d-x工程中自带helloworld项目,我们就可以通过这个项目来看出cocos2d-x的基本结构
项目结构
可以看到win32,linux,bada,ios等文件夹与平台相关的,与开发逻辑相关的即是Classes和Resource文件夹,Classes文件夹放置代码,Resource放置资源(图片,声音,图片配置文件等)
下面是 我 学习hello world 觉得重要的 名词吧
main类就算是win32平台的一个入口类启动程序
AppDelegate是应用真正的入口,在这里有平台的适配参数,找到导演类,启动我们的场景
HelloWorldScene场景类,构建方法主要是建层等,关键的方法是init,主要是构建场景中的各种元素
导演(CCDirector)在cocos2d-x引擎中,导演类是游戏的组织者和领导者,导演制定规则让游戏内的场景,布景,和人物角色有序的运行
摄像机(CCCamera),每个节点都需要使用摄像机,当节点发生缩放,旋转,和位置变化时,都需要覆盖摄像机,让这个节点通过摄像机重新渲染。
场景(CCScene)在游戏里,场景就是关卡,关卡有人物和背景构成
布景(CCLayer)从概念上说,布景就是场景里的背景,其实就是层次的概念,这种概念在kjava时代就有,就是手动的把游戏中的场景分层(也有靠地图编辑器实现这一功能的)
人物(CCSprite),这就很明显了,当然包括主角和敌人,和npc,以我个人的理解,也包括游戏中的动态大图素及机关等
动作(CCAction),就是人物(CCSprite)拥有的动作
内存自动回收
Cocos2d—x提供了一种类似java的内存回收机制,,在java中定义的对象实例,不用担心他什么时候被释放,因为java虚拟机会在变量不再使用时自动释放内存,而在C++中,不再使用这个变量时,我们需要手动释放(使用delete),不然我们的内存就会溢出,而在使用cocos2d-x时我们无需再关心这个问题,就是在新创建实例时,加入autorelease,如图所示:
这样就可以自动释放不再需要的内存了.
动作(CCAction)
在cocos2d-x引擎中,动作定义了在节点上进行通用的操作,他不依赖于节点,但是运行时需要指定节点作为目标,动作可以实现很多动画效果
动作分为瞬时动作(基类CCActionInstanse)和延时动作(基类CCActionInterval),实现动作包括几个步骤:
1.创建目标节点(一般是精灵)
m_grossini = CCSprite::spriteWithFile(s_pPathGrossini);
2.定义动作
CCActionInterval* actionTo = CCMoveTo::actionWithDuration(2, CCPointMake(s.width-40, s.height-40));
3.动作执行
m_grossini->runAction( CCSequence::actions(actionBy, actionByBack, NULL));
消息机制
cocos2d-x也采用了消息机制,如上图中代码所示,在完成动作后调用相应函数
coco2d-2.0以上的版本 去掉了 很多函数 比如CCMutableArray
原来是 CCMutableArray<CCSpriteFrame *> *animFrames = new CCMutableArray<CCSpriteFrame*>(4);
现在都实现不了了
可以用 CCArray * aanimFrames = CCArray::array(); //CCArray 不能用new 来创建