现在的位置: 首页 > 综合 > 正文

cocos2d-x -1- HelloWorld例子分析

2013年06月28日 ⁄ 综合 ⁄ 共 3052字 ⁄ 字号 评论关闭

class类目录中只有4个文件

AppDelegate.h
AppDelegate.cpp 
HelloWorldScene.h
HelloWorldScene.cpp

1. AppDelegate.h 和 AppDelegate.cpp  分析

AppDelegate类继承自CCApplication,AppDelegate.cpp 中实现AppDelegate.h定义的4个函数
virtual bool initInstance();
virtual bool applicationDidFinishLaunching();
virtual void applicationDidEnterBackground();
virtual void applicationWillEnterForeground();

一 initInstance函数:主要是针对各平台的不同代码使用判断进行区分,例如如下表示在win32下才执行其中代码
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)

二 applicationDidFinishLaunching函数:cocos2d-x启动的初始化的地方,通常此函数中只需要修改三个地方:

1. 设置设备方向

pDirector->setDeviceOrientation (kCCDeviceOrientationLandscapeLeft); 
参数的4种值,分别是上,下,左,右四个方向
    kCCDeviceOrientationPortrait
    kCCDeviceOrientationPortraitUpsideDown
    kCCDeviceOrientationLandscapeLeft
    kCCDeviceOrientationLandscapeRight

2. 动画间隔,设置更新频率
pDirector->setAnimationInterval (1.0
/ 60);

3. 在屏幕左下角显示帧每秒
pDirector->setDisplayFPS (true);

三 applicationDidEnterBackground函数:在当前游戏运行在后台时执行。例如用户游戏期间打电话,CCDirector::sharedDirector ()->pause();调用此函数,让游戏暂停。


四 applicationWillEnterForeground函数:与上一个函数对应,当用户切换回游戏界面之后执行。CCDirector::sharedDirector ()->resume();重新开始游戏

HelloWorldScene.h 和 HelloWorldScene.cpp

问题1:layer如何进行初始化的?


coco2d-x创建scene或layer的实例,可以通过node静态方法获取一个实例,node方法来自CCNode类,主要负责创建、初始化,自动释放一个节点。
c++不能调用父类的方法,不支持java的super关键字提供的功能。所以CCNode子类中都覆盖此node方法,cocos2d-x中为了避免反复写node代码,定义为scene和layer定义了宏
SCENE_NODE_FUNC
SCENE_FUNC_PARAM

LAYER_NODE_FUNC
LAYER_NODE_FUNC_PARAM
问题2:为什么要使用LAYER_NODE_FUNC宏?为什么要覆写init方法?
1. 为了确保获取构造器函数中执行代码的执行结果是否正常,而c++构造器不支持返回值,而是使用‘二阶段构造’。
问题3:什么是二阶段构造?
即先调用构造函数(CCLayer类node方法中调用构造函数),再调用init方法进行初始化(子类中先调用父类的init方法)。

Action简单总结

 

 

一、动作分为三个步骤

1. 创建节点(通常是精灵)

2. 创建动作

3. 动作执行(执行单个动作,或者执行动作组合)

 

二、动作分为两类 , 详细可参见API CCAction中的类图

瞬时动作和延时动作。 瞬时定义了9种,延时27种

 

组合动作(属于延时动作)

Sequence 序列执行

Spawn    同步执行

Repeat   重复有限次数执行

RepeatForever 无限重复

Reverse  发转,CCFiniteTimeAction引入的一个接口

Animation *动画

 

三、CCNode.runAction()

 

 

参考资料

 

个人建议

先对有多少总actin及其分类进行总体了解,可以资料2的类图和资料5的第一篇文章。

之后写些代码学习怎样使用action,可以参考cocos2d-x提供的acton代码和资料3的第一篇文章。

最后了解一下CCAction的代码,可以参考资料3的第二篇文章

 

1.cocos2d-x源码中提供的 tests 项目 actionTest

 

2. CCAction API - Action类图

 

 

3. Bugs Bunny - 知易游戏开发教程

讲解各种Action分类和具体使用       讲解所有Action的基类CCAction

 

4. 小满 ok

讲解Action的实现    cocos2d-x初探学习笔记(22)--动画类

 

5. 热爱游戏编程的猴子

cocos2d-x action动作整理集合(所有action类分类和介绍)

cocos2d-x 使用action实现各种动画效果 (仅挑选几个进行介绍)

cocos2d-x 创建帧动画

cocos2d-x帧动画实现(续)

cocos2d-x获取当前动画是第几帧

cocos2d-x 根据png序列图创建animation

cocos2d-x 运动中的加速度效果

cocos2d-x 在CCSequence中使用CCCallFunc时的release BUG

 

 

6. 老G

cocos2d-x学习笔记04:简单动画

cocos2d-x学习笔记08:动作1:立即动作

cocos2d-x学习笔记09:动作2:持续动作

cocos2d-x学习笔记10:动作3:补间动作

 

7. Tsiannian

action 1    action 2

学习之前先找一些资料,写些基本的demo, 参照:

 

一、 cocos2d-x  Tests 源码

 

二、《cocos2d-x手机游戏开发》

 

三、 cocos2d-x相关博客

 

基于:子龙山人-学习资料汇总

 

 

1. 小满的专栏

cocos2d-x入门系列       cocos2d-x游戏实例

 

2. 热爱游戏编程的猴子

 

3. himi

 

4. 老G      cocos2d-x论坛中整理的老G文章列表

 

5. 子龙山人

塔防系列  cocos2d-x 与 mvc

菜单, opengl, 精灵, box2d, spritehelper,levelhelper, TexturePacker, TiledMap

 

6. Bugs Bunny - 知易系列

知易游戏开发教程cocos2d-x移植版002(上) 基本概念

知易游戏开发教程cocos2d-x移植版002(下) 实例演练(带源码)

知易游戏开发教程cocos2d-x移植版003       action

知易游戏开发教程cocos2d-x移植版004  触屏处理

知易游戏开发教程cocos2d-x移植版005(上) 地图编辑器

 

7. 布莱特_雷欧波德

 

8. Tsiannian

action, 内存管理,CCNode使用,响应Windows按键消息

 

9. 相关资料

 

10. cocos2d相关博客

 

四、基于 coco2d-x 开源项目

 

1. Bugs Bunny 例子

2. github.com 搜索cocos2d-x

抱歉!评论已关闭.