CCScene,CCLayer,CCSprite,CCDirector
一。CCScene : 游戏中不同的画面可以用不同的场景展示出来,大致的可以分为以下的几类场景:
1. 展示类场景。游戏开场画面,游戏简介,胜利以及失败提示,帮助。
2. 选择类场景。主菜单,游戏设置,关卡选择,游戏控制参数等。
3. 游戏场景。游戏不同背景的切换。
二。CCLayer : 游戏中不同的场景又可以由多个层叠加组合,比如主菜单画面由三个层叠加实现:
1. 编号为1的背景图像(background layer)在最底层。
2. 编号为2的运动层(animation layer)在中间。
3. 编号为3的菜单选项(menu layer)在最外层。
层的事件相应机制 : 最外层最先接受到事件(屏幕触碰),最后是底层,如果在某层处理了该事件,则后面的层不会在接受到事件信号。
公用层 : 菜单层(menu layer), 颜色层(color layer), etc
1. ColorLayer 透明的,可以按照RGB设置填充颜色的层,可以通过setContentSize设置层大小,尺寸。
2. MenueItem功能:
i. 设置按钮的状态。
ii. 负责回调处理函数,内置 NSInvocation *invocation来实现回调函数激活。
o MenuItemLabel 内置label对象,将基本的Label转变成菜单项,增加选中时的文字放大效果。
o MenuItemAtlasFont 将LabelAtlas转变成菜单项,增加选中时的文字放大效果。
o MenuItemFont 创建直接设置字体的菜单项。
o MenuItemSprite 内置3个CocosNode对象,表示正常,禁止,选中三个状态的图像。
o MenueItemAtlasSprite 从MenuItemSprite派生,提供针对3个对象的操作。
o MenuItemImage 从MenuItemSprite派生,不支持禁止状态的设置。
o MenuItemToggle 支持内部MenuItem数组负责展示不同的状态,进而显示出来实现状态切换
每一层又可以包含很多的内容要素 : label, htmllabel, sprite, map, etc。主要功能:
1. 接受屏幕触摸(touch)操作输入。
2. 接收动力感知(accelerometer)输入。
三。CCSprite :精灵就是游戏中玩家或者系统控制的对象,及一个不断变化的图片。
1. 位置移动。
2. 选择。
3. 放大缩小。
4. 运动。
四。CCDirector : 导演对象是整个流程的代表,负责游戏过程中场景的切换。
导演只有一个(sigleton)。导演对象接受层对象/场景的要求,按照预先的流程来终止,停止,激活当前的场景,引导下一个场景。Director对象完成的两大类任务:
I. 设置主程序窗口的显示属性:
1. 设置主窗口的方向(垂直/水平)。
2. 设定director对象与当前窗口的关系,便于director操作主窗口。
3. 是否显示FPS(每秒显示的帧数)。
4. 设定游戏动画每秒显示帧数(默认60帧)。
5. 设定主窗口显示图像的调色盘位宽。
II. 管理,显示场景:
1. 当前正在显示的场景。 Scene *runningScene_;
2. 下一个将要显示场景。 Scene *NextScene;
3. 待执行场景队列。 NSMutableArray *sceneStack_;
4. 主程序启动,显示第一个场景。 (void) runWithScene: (Scene*)scene;
5. 传如场景设置为当前执行场景。 (void) pushScene: (Scene*)scene;
6. 执行待执行队列中最后一场景。 (void) popScene;
7. 用一个场景取代当前执行场景。 (void) replaceScene: (Scene*)scene;
8. 结束场景运行。 (void) end;
9. 暂停场景运行。 (void) pause;
10. 恢复场景运行。 (void) resume;
五。使用Scene的作用:
1. 作为某个场景的总体容器对象,包括所有的内容对象(菜单,状态,游戏角色,NPC)。层叠关系通过CocosNode 的 addChild的Z参数决定。
2. 实现场景切换的特殊效果。所有的场景切换特效都是从Scene的子类TransitionScene派生的。
六。使用layer的作用:
1. Touch事件处理。
2. 动力感知处理。
使用Sprite的作用: 展示静态图片。
使用AtlasSprite的作用: 展示游戏角色和NPC角色。
CCScene,CCLayer,CCSprite,CCDirector的更多相关文章
- cocod2d-x 之 CCDirector、CCScene、CCSprite
CCDirector是控制游戏流程的主要组件. typedef enum { /// sets a 2D projection (orthogonal projection)2D投机模式 kCCDir ...
- 整理Cocos2d-x 面试题解
昨天听了腾讯2015校招的在线宣讲会,看到了游戏技术大拿Steven,他总结了需要的达人得爱技术,能坚持,够挑剔.马上校招了,加油吧,骚年~ 网上关于cocos2d-x的面试题比较少,这里搜集和整理了 ...
- 简单的cocos2dx笔试题
1.参数传递有几种方式?值传递.指针传递.引用传递 2.指针和引用有什么分别:如果传引用比传指针安全,为什么?如果我使用常量指针难道不行吗? 1.指针是一个变量,存储一个地址,指向内存的一个存储单元: ...
- cocos2d-x CCScrollView和CCTableView的使用(转载)
转载请注明来自:Alex Zhou的程序世界,本文链接:http://codingnow.cn/cocos2d-x/1024.html //============================== ...
- [Cocos2d-x For WP8]ActionManager动作管理
在Cocos2d-x里面可以通过CCActionManger类来管理动作的暂停和恢复,CCActionMessage是管理所有Action的单例,一般情况下并不直接使用这个单例,而是使用CCNode的 ...
- [Cocos2d-x For WP8]Transition 场景切换
在游戏中通常会打完了一关之后就会从当前的场景转换到另外一关的场景了,在Cocos2d-x中是由CCScene类表示一个场景.那么场景(CCScene)是为游戏中的精灵(CCSprite)提供了舞台,场 ...
- cocos2d-x 游戏暂停界面,监听home键,返回键,Menu键 解决方案
游戏暂停界面: cocos2d-x中游戏暂停界面提供的思路是用pushScene()和popScne(),即推进和弹出场景,当游戏暂停时,推进(pushScene())暂停场景,之前运行的场景将会自动 ...
- cocos2d-x ScrollView、TableView
转自:http://codingnow.cn/cocos2d-x/1024.html 在游戏和应用中经常要实现左右滑动展示游戏帮助.以列表显示内容的UI效果,就像android中的Gallery和Li ...
- cocos2d的框架思路
这是我第一次写cocos的框架思路哈,虽然只是写完了一个程序,按理来说应该再多写一些,多积累一些经验了再来写这个框架的构成,但是我觉得还是把我这次写代码的所有想法先记下来哈,等到以后继续写cocos的 ...
随机推荐
- openal 基础知识3
四创新科技extension (Creative Labs'Extensions) 创新科技为OpenAL添加了多个extensions,许多都利用了他们声卡的特性. “Enumerate All”e ...
- hadoop基础学习---数据管理策略
上图中的ABCDE都代表默认大小64M的数据块 nameNode与dataNode之间有一个心跳机制,datanode每隔多秒钟定期的发送心跳到nameNode
- 设置div滚动条
这个是很常见的一个任务了,基本是通过CSS去实现滚动条. 滚动条 设置是否显示滚动条主要是在CSS中设置下列的属性: 代码如下: overflow:visible|auto|hidden|scroll ...
- js中数组作为参数传递的定义
下面的函数实现了一个我们想要的最基本的图片预加载效果 function preloadimages(arr){ var newimages=[] var arr=(typeof arr!= ...
- Java 中 Map与JavaBean实体类之间的相互转化
/** * 将一个 JavaBean 对象转化为一个 Map * @param bean 要转化的JavaBean 对象 * @return 转化出来的 Map 对象 * @throws Intr ...
- ROS文件系统介绍--2
ros初级核心教程--ROS文件系统介绍(原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/) 1.ROS文件系统介绍: 1.1.预备工作:本教程中 ...
- [转]ASP.NET MVC 5 - 给电影表和模型添加新字段
在本节中,您将使用Entity Framework Code First来实现模型类上的操作.从而使得这些操作和变更,可以应用到数据库中. 默认情况下,就像您在之前的教程中所作的那样,使用 Entit ...
- 《C++ Primer Plus》15.1 友元 学习笔记
15.1.1 友元类假定需要编写一个模拟电视机和遥控器的简单程序.决定定义一个Tv类和一个Remote类,来分别表示电视机和遥控器.遥控器和电视机之间既不是is-a关系也不是has-a关系.事实上,遥 ...
- mongodb3.2系统性学习——3、update()操作
mongodb 包含众多的原子性操作: 实例: //连接数据库 dbService = connect("localhost:27017"); //选择插入集合 db = dbS ...
- postgres模板数据库
CREATE DATABASE 实际上是通过拷贝一个现有的数据库进行工作的.缺省时,它拷贝名为 template1 的标准系统数据库.所以该数据库是创建新数据库的"模板".如果你给 ...