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定义了宏
问题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