[iOS]cocos2d的核心类(一)
来源:互联网 发布:淘宝联名精英版白金卡 编辑:程序博客网 时间:2024/04/30 23:01
游戏的整体架构,由不同的场景构成,每个场景由多个层组成,以及每个层上的精灵的运动。
CCScene : 游戏中不同的画面可以用不同的场景展示出来,大致的可以分为以下的几类场景:
展示类场景。游戏开场画面,游戏简介,胜利以及失败提示,帮助。
选择类场景。主菜单,游戏设置,关卡选择,游戏控制参数等。
游戏场景。游戏不同背景的切换。
CCLayer : 游戏中不同的场景又可以由多个层叠加组合,比如主菜单画面由三个层叠加实现:
编号为1的背景图像(background layer)在最底层。
编号为2的运动层(animation layer)在中间。
编号为3的菜单选项(menu layer)在最外层。
层的事件相应机制 : 最外层最先接受到事件(屏幕触碰),最后是底层,如果在某层处理了该事件,则后面的层不会在接受到事件信号。
公用层 : 菜单层(menu layer), 颜色层(color layer), etc
1. ColorLayer
透明的,可以按照RGB设置填充颜色的层,可以通过setContentSize设置层大小,尺寸。
2. MenueItem系类:
o MenuItem是基础类,主要任务:
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 :
精灵就是游戏中玩家或者系统控制的对象。及一个不断变化的图片 :
位置移动。
选择。
放大缩小。
运动。
CCDirector : 导演对象是整个流程的代表,负责游戏过程中场景的切换。导演只有一个(sigleton)。
导演对象接受层对象/场景的要求,按照预先的流程来终止,停止,激活当前的场景,引导下一个场景。
针对director的调用代码 :
// Before creating any layer, set the landscape mode
[[Director shareDirector] setDeviceOrientation: CCDeviceOrientationLandscapeRight];
// Attach the OpenGL view to a window
[[Director shareDirector] attachInView: window];
// Show FPS
[[Director sharedDirector] setDisplayFPS: YES];
// Frames per second
[[Director sharedDirector] setAnimationIntervel: 1.0/60];
// Default texture format for PNG/BMP/TIFF/JPEG/GIF images
// It can be RGBA8888, RGBA4444, RGB5_A1, RGB565
// You can change anytime.
[Texture2D setDefaultAlphaPixelFormat: kTexture2DPixelFormat_RGBA8888];
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的作用:
1.展示静态图片。
使用AtlasSprite的作用:
1.展示游戏角色和NPC角色。
版权声明:
转自:
http://www.blogbus.com/thewhitemac-logs/113396854.html
TheWhiteMac Copy right©
- [iOS]cocos2d的核心类(一)
- IOS-IOS应用的核心(一)
- cocos2d-x的核心类
- cocos2d-x核心概念(一)——简述
- ios之核心动画(一)
- iOS核心动画(一)CAAnimation
- Cocos2D-X 核心类
- Cocos2d 核心类
- Cocos2d-iphone 开发之(3) 了解Cocos2d核心类
- Cocos2D-x 中的核心类
- cocos2d-x之核心类
- cocos2d-x引擎的核心类-----------沈大海
- iOS 动画讲解(一)之核心动画
- iOS之CALayer与核心动画(一)
- (6)Cocos2D-x中的核心类(未写完)
- cocos2d-x引擎的核心类-沈大海cocos2d-x教程7
- ios的核心动画
- jquery的核心知识(一)
- linux下socket指定网卡
- Spring自动回滚的事务管理配置
- windows搜索包含文字的文件,.php文件里包含的内容其搜不到?
- 压缩感知源码理解
- mysql 安装手册(转)
- [iOS]cocos2d的核心类(一)
- 东软实训推荐面试问题9:依你现在的水平能找到更好的企业?
- oracle中RAW数据类型
- 比特币
- hive union (all)
- 【Android基础】Activity的启动模式(android:launchMode)
- Spring的事务不回滚处理
- Hibernate主键增加方式
- C/C++定义与声明