cocos2d游戏引擎介绍
2011-11-09 11:40
429 查看
目录:
Cocos2D游戏引擎介绍
Cocos2D游戏引擎安装
Cocos2D基本概念
Cocos2D游戏动作
Cocos2D的Touch事件
帧动画序列制作工具介绍
主要功能:
1.流程控制(Flow control):非常容易地管理不同场景(scenes)之间的流程控制
2.精灵(Sprites):快速而方便的精灵
3.动作(Actions):告诉精灵们该做什么。可组合的动作如移动(move)、旋转(rotate)和缩放(scale)等更多
4.特效(Effects):特效包括波浪(waves)、旋转(twirl)和透镜(lens)等更多
5.平面地图(Tiled Maps):支持包括矩形和六边形平面地图
6.转换(Transitions):从一个场景移动到另外一个不同风格的场景
7.菜单(Menus):创建内部菜单
8.文本渲染(Text Rendering):支持标签和HTML标签动作
9.文档(Documents):编程指南 + API参考 + 视频教学+ 很多教你如何使用的简单测试例子
10.基于Pyglet:没有外部的依赖
11.基于OpenGL:支持硬件加速
1.下载:cocos2d-iphone最新版0.99.5;
2.打开Terminal工具,进入Cocos2d-iPhone-0.99.5目录下;
3.执行命令:./install_template.sh
4.安装完毕后启动Xcode,打开菜单File->New Project,出现如下视图
1.Scenes(场景)
是app 工作流上独立块。一个app可能拥有多个scenes, 但在任何时候只能有一个是激活状态的。一个CCScene对象由一个或多个layers组成,layers之间是前后相连的。layer提供了scene的外观 appearance和行为behavior.
2.Director(导演)
CCDirector负责scenes之间的前进或后退。CCDirector是singleton模式的共享的对象,它知道当前哪个scene是激活。
3.Layers(层)
CCLayer对象定义了可描绘的区域,定义了描绘的规则。当编写cocos2d程序的时候,大部分工作就是编写CCLayer的子类去实现所要的效果。
4.Sprites(精灵)
sprite对象就是一个可以移动、选择、伸缩、动画的2d图形,CCSprite 对象的子成员中可以包含其它的CCSprite 对象。
1.瞬时动作——马上就完成的动作
放置——Place
隐藏——Hide
显示——Show
可见切换——ToggleVisibility
2.延时动作——完成需要一定的时间
移动到——CCMoveTo
移动——CCMoveBy
跳跃到——CCJumpTo
跳跃——CCJumpBy
贝塞尔——CCBezierBy
放大到——CCScaleTo
放大——CCScaleBy
旋转到——CCRotateTo
旋转——CCRotateBy
闪烁——CCBlink
色调变化到——CCTintTo
色调变化——CCTintBy
变暗到——CCFadeTo
由无变亮——CCFadeIn
由亮变无——CCFadeOut
延时动作就是指动作的完成需要一定时间。因此,actionWithDuration是延时动作执行是第一个参数,延时动作的共同基类是CCIntervalAction。
(二)组合动作
组合动作就是指按照一定的次数将不同的基本动作组合起来,形成连贯的一套组合动作。
组合动作主要包括以下几类:
序列CCSequence:线序排列若干个动作,然后按先后次序逐个执行。
同步Spawn:同时并列执行若干个动作,但要求动作都必须是可以同时执行的。
重复有限次数Repeate:重复执行有限的次数的动作。
反动作Reverse:反向或逆向执行某个动作,支持针对动作序列的反动作序列。
动画Animation:就是让精灵自身的连续执行一段影象,形成模拟运动的效果。
无限重复RepeatForever:无限期执行某个动作或动作序列,直到被停止。
(三)CallFunc Actio
CallFunc Action 允许你可以在一个action里面调用一个方法。在序列action里面的最后一个调用,会非常有用。
Example:
id actionTo = [MoveTo actionWithDuration: 2 position:ccp(s.width-40,s.height-40)];
id actionBy = [MoveByactionWithDuration:2 position: ccp(80,80)];
id actionCallFunc = [CallFunc actionWithTarget:self selector:@selector(doATask)];
id actionSequence = [Sequence actions: actionTo, actionBy, actionCallFunc, nil];
-(void) doATask
{
//somecode
}
有两种类型的CallFunc,分别是CallFuncN和CallFuncND
CallFuncN 把node当作参数。
CallFuncND 需要node和一个指向某个数据的指针。
Example:
id actionCallFuncN = [CallFuncN actionWithTarget:self selector:@selector(doATaskN:)];
id actionCallFuncND = [CallFuncND actionWithTarget:self selector:@selector(doATaskN:data:) [/pre]data:pointerToSomeData];
- (void) doATaskN: (id)node
{//some code
}
- (void) doATaskND: (id)node data:(void*)d
{//some code
}
(四)速度变化
基本动作和组合动作实现了针对精灵的各种运动、动画效果的改变,但这样的改变的速度是不变的,
通过CCEaseAction为基类的类系和CCSpeed类可以很方便的修改精灵执行动作的速度:由快至慢还是由慢变快。
EaseIn:由慢至快。
EaseOut:由快至慢。
EaseInOut:由慢至快再由快至慢。
EaseSineIn:由慢至快。
EaseSineOut:由快至慢。
EaseSineInOut:由慢至快再由快至慢。
EaseExponentialIn:由慢至极快。
EaseExponentialOut:由极快至慢。
EaseExponentialInOut:由慢至极快再有极快至慢。
Speed:人工设定速度,还可通过SetSpeed不断调整。
事件处理框架
1.(void)touchesBegan:(NSSet *)touches
withEvent:(UIEvent *)event {}
●
2.(void)touchesMoved:(NSSet *)touches
withEvent:(UIEvent *)event {}
●
3.(void)touchesEnded:(NSSet *)touches
withEvent:(UIEvent *)event {}
●
4.(void)touchesCancelled:(NSSet *)touches
withEvent:(UIEvent *)event {}
事件处理机制
核心:就是如何将系统用户输入信息传递给每个Layer对象。
1.接管:从系统iPhoneOS的标准UIView获得触摸输入。
2.分发:按照预先定义好的逻辑分发给各种注册对象。
3.处理:注册对象之间如何协调响应用户的输入。
Zwoptex用途
1.将多个单独的PNG图片合并成一个大的PNG图片
2.将合并之前的每一个小PNG图片在合并之后PNG图片中的位置坐标以及图片大小等进行通过参数文件记录保存,供Cocos2d程序调用。
// 将花朵的png图片序列和plist载入场景
CCSpriteFrameCache *cache = [CCSpriteFrameCache sharedSpriteFrameCache];
[cacheaddSpriteFramesWithFile:@"Flower.plist"];
idsheet = [CCSpriteSheet spriteSheetWithFile:@"Flower.png"
capacity:60];
[selfaddChild:sheet];
// 将花朵Sprite添加到场景中
FlowerSprite *sprite = [FlowerSprite node];
CGSize size = [[CCDirector sharedDirector] winSize];
sprite.position = ccp(size.width / 2, size.height / 2);
[selfaddChild:sprite];
CCSpriteFrameCache *cache = [CCSpriteFrameCache sharedSpriteFrameCache];
NSMutableArray *frames = [[NSMutableArray array] retain];
// 构造每一个帧的实际图像数据
for (int i = 1; i <= FLOWER_SPRITE_SHEET_CAPACITY; i++) {
NSString *frameName = [NSStringstringWithFormat:@"Flower%04d.png", i];
CCSpriteFrame *frame = [cache spriteFrameByName:frameName];
[framesaddObject:frame];
}
// 使用CCAnimation和CCRepeatForever构造一个一直重复的动画
NSString *firstFrameName = [NSStringstringWithFormat:@"Flower%04d.png", 1];
idsprite = [CCSprite spriteWithSpriteFrameName:firstFrameName];
CCAnimation *animation = [CCAnimation animationWithName:@"Flower“ delay:1.0f / 30 frames:frames];
[spriterunAction:[CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:animation restoreOriginalFrame:NO]]];
// 将构造好的动画加入显示列表
[self addChild:sprite];
1,准备工作
引入头文件:#import "SimpleAudioEngine.h"
2,播放背景音乐
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"background.wav"];
3,播放音效
[[SimpleAudioEngine sharedEngine]playEffect:@"effect1.wav"];
4,暂停背景音乐
[[SimpleAudioEngine sharedEngine] pauseBackgroundMusic];
5,预先加载背景音乐
[[SimpleAudioEngine sharedEngine] preloadBackgroundMusic];
使用CDAudioManager来更改音乐的属性(更改属性之前必须有背景音乐在播放)
6,更改音量(音量大小从0到1)
[CDAudioManager sharedManager].backgroundMusic.volume = 1.0f;
7,循环播放N次背景音乐
[CDAudioManager sharedManager].backgroundMusic.numberOfLoops = N;
8,背景音乐停止时触发事件
[[CDAudioManager sharedManager] setBackgroundMusicCompletionListener:self
selector:@selector()];
Cocos2D游戏引擎介绍
Cocos2D游戏引擎安装
Cocos2D基本概念
Cocos2D游戏动作
Cocos2D的Touch事件
帧动画序列制作工具介绍
一、Cocos2d游戏引擎介绍
Cocos2d是一个开源框架,用于构建2D游戏、演示程序和其他图形界面交互应用等.主要功能:
1.流程控制(Flow control):非常容易地管理不同场景(scenes)之间的流程控制
2.精灵(Sprites):快速而方便的精灵
3.动作(Actions):告诉精灵们该做什么。可组合的动作如移动(move)、旋转(rotate)和缩放(scale)等更多
4.特效(Effects):特效包括波浪(waves)、旋转(twirl)和透镜(lens)等更多
5.平面地图(Tiled Maps):支持包括矩形和六边形平面地图
6.转换(Transitions):从一个场景移动到另外一个不同风格的场景
7.菜单(Menus):创建内部菜单
8.文本渲染(Text Rendering):支持标签和HTML标签动作
9.文档(Documents):编程指南 + API参考 + 视频教学+ 很多教你如何使用的简单测试例子
10.基于Pyglet:没有外部的依赖
11.基于OpenGL:支持硬件加速
二、Cocos2d游戏引擎安装
说明:从0.99.0版本开始,Cocos2d-iPhone的模板类要求苹果SDK3.0及以上版本。1.下载:cocos2d-iphone最新版0.99.5;
2.打开Terminal工具,进入Cocos2d-iPhone-0.99.5目录下;
3.执行命令:./install_template.sh
4.安装完毕后启动Xcode,打开菜单File->New Project,出现如下视图
三、Cocos2d基本概念
开发cocos2d应用程序,必须先了解如下四个概念:1.Scenes(场景)
是app 工作流上独立块。一个app可能拥有多个scenes, 但在任何时候只能有一个是激活状态的。一个CCScene对象由一个或多个layers组成,layers之间是前后相连的。layer提供了scene的外观 appearance和行为behavior.
2.Director(导演)
CCDirector负责scenes之间的前进或后退。CCDirector是singleton模式的共享的对象,它知道当前哪个scene是激活。
3.Layers(层)
CCLayer对象定义了可描绘的区域,定义了描绘的规则。当编写cocos2d程序的时候,大部分工作就是编写CCLayer的子类去实现所要的效果。
4.Sprites(精灵)
sprite对象就是一个可以移动、选择、伸缩、动画的2d图形,CCSprite 对象的子成员中可以包含其它的CCSprite 对象。
四、Cocos2d游戏动作
(一)基本动作1.瞬时动作——马上就完成的动作
放置——Place
隐藏——Hide
显示——Show
可见切换——ToggleVisibility
2.延时动作——完成需要一定的时间
移动到——CCMoveTo
移动——CCMoveBy
跳跃到——CCJumpTo
跳跃——CCJumpBy
贝塞尔——CCBezierBy
放大到——CCScaleTo
放大——CCScaleBy
旋转到——CCRotateTo
旋转——CCRotateBy
闪烁——CCBlink
色调变化到——CCTintTo
色调变化——CCTintBy
变暗到——CCFadeTo
由无变亮——CCFadeIn
由亮变无——CCFadeOut
延时动作就是指动作的完成需要一定时间。因此,actionWithDuration是延时动作执行是第一个参数,延时动作的共同基类是CCIntervalAction。
(二)组合动作
组合动作就是指按照一定的次数将不同的基本动作组合起来,形成连贯的一套组合动作。
组合动作主要包括以下几类:
序列CCSequence:线序排列若干个动作,然后按先后次序逐个执行。
同步Spawn:同时并列执行若干个动作,但要求动作都必须是可以同时执行的。
重复有限次数Repeate:重复执行有限的次数的动作。
反动作Reverse:反向或逆向执行某个动作,支持针对动作序列的反动作序列。
动画Animation:就是让精灵自身的连续执行一段影象,形成模拟运动的效果。
无限重复RepeatForever:无限期执行某个动作或动作序列,直到被停止。
(三)CallFunc Actio
CallFunc Action 允许你可以在一个action里面调用一个方法。在序列action里面的最后一个调用,会非常有用。
Example:
id actionTo = [MoveTo actionWithDuration: 2 position:ccp(s.width-40,s.height-40)];
id actionBy = [MoveByactionWithDuration:2 position: ccp(80,80)];
id actionCallFunc = [CallFunc actionWithTarget:self selector:@selector(doATask)];
id actionSequence = [Sequence actions: actionTo, actionBy, actionCallFunc, nil];
-(void) doATask
{
//somecode
}
有两种类型的CallFunc,分别是CallFuncN和CallFuncND
CallFuncN 把node当作参数。
CallFuncND 需要node和一个指向某个数据的指针。
Example:
id actionCallFuncN = [CallFuncN actionWithTarget:self selector:@selector(doATaskN:)];
id actionCallFuncND = [CallFuncND actionWithTarget:self selector:@selector(doATaskN:data:) [/pre]data:pointerToSomeData];
- (void) doATaskN: (id)node
{//some code
}
- (void) doATaskND: (id)node data:(void*)d
{//some code
}
(四)速度变化
基本动作和组合动作实现了针对精灵的各种运动、动画效果的改变,但这样的改变的速度是不变的,
通过CCEaseAction为基类的类系和CCSpeed类可以很方便的修改精灵执行动作的速度:由快至慢还是由慢变快。
EaseIn:由慢至快。
EaseOut:由快至慢。
EaseInOut:由慢至快再由快至慢。
EaseSineIn:由慢至快。
EaseSineOut:由快至慢。
EaseSineInOut:由慢至快再由快至慢。
EaseExponentialIn:由慢至极快。
EaseExponentialOut:由极快至慢。
EaseExponentialInOut:由慢至极快再有极快至慢。
Speed:人工设定速度,还可通过SetSpeed不断调整。
五、Cocos2d的Touch事件
iPhone OS通过NSSet传递硬件传感器传来的各种组合触摸信息。事件处理框架
1.(void)touchesBegan:(NSSet *)touches
withEvent:(UIEvent *)event {}
●
2.(void)touchesMoved:(NSSet *)touches
withEvent:(UIEvent *)event {}
●
3.(void)touchesEnded:(NSSet *)touches
withEvent:(UIEvent *)event {}
●
4.(void)touchesCancelled:(NSSet *)touches
withEvent:(UIEvent *)event {}
事件处理机制
核心:就是如何将系统用户输入信息传递给每个Layer对象。
1.接管:从系统iPhoneOS的标准UIView获得触摸输入。
2.分发:按照预先定义好的逻辑分发给各种注册对象。
3.处理:注册对象之间如何协调响应用户的输入。
(六)帧动画序列制作工具——Zwoptex
在cocos2d中,大部分动画都是预先渲染好的位图。然后通过动画将各个图片序列在一起播放。Zwoptex用途
1.将多个单独的PNG图片合并成一个大的PNG图片
2.将合并之前的每一个小PNG图片在合并之后PNG图片中的位置坐标以及图片大小等进行通过参数文件记录保存,供Cocos2d程序调用。
添加动画
利用软件Zwoptex制作的png和plist文件添加动画// 将花朵的png图片序列和plist载入场景
CCSpriteFrameCache *cache = [CCSpriteFrameCache sharedSpriteFrameCache];
[cacheaddSpriteFramesWithFile:@"Flower.plist"];
idsheet = [CCSpriteSheet spriteSheetWithFile:@"Flower.png"
capacity:60];
[selfaddChild:sheet];
// 将花朵Sprite添加到场景中
FlowerSprite *sprite = [FlowerSprite node];
CGSize size = [[CCDirector sharedDirector] winSize];
sprite.position = ccp(size.width / 2, size.height / 2);
[selfaddChild:sprite];
CCSpriteFrameCache *cache = [CCSpriteFrameCache sharedSpriteFrameCache];
NSMutableArray *frames = [[NSMutableArray array] retain];
// 构造每一个帧的实际图像数据
for (int i = 1; i <= FLOWER_SPRITE_SHEET_CAPACITY; i++) {
NSString *frameName = [NSStringstringWithFormat:@"Flower%04d.png", i];
CCSpriteFrame *frame = [cache spriteFrameByName:frameName];
[framesaddObject:frame];
}
// 使用CCAnimation和CCRepeatForever构造一个一直重复的动画
NSString *firstFrameName = [NSStringstringWithFormat:@"Flower%04d.png", 1];
idsprite = [CCSprite spriteWithSpriteFrameName:firstFrameName];
CCAnimation *animation = [CCAnimation animationWithName:@"Flower“ delay:1.0f / 30 frames:frames];
[spriterunAction:[CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:animation restoreOriginalFrame:NO]]];
// 将构造好的动画加入显示列表
[self addChild:sprite];
播放声音
使用cocos2d的SimpleAudioEngine可以很简单的播放背景音乐和音效。1,准备工作
引入头文件:#import "SimpleAudioEngine.h"
2,播放背景音乐
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"background.wav"];
3,播放音效
[[SimpleAudioEngine sharedEngine]playEffect:@"effect1.wav"];
4,暂停背景音乐
[[SimpleAudioEngine sharedEngine] pauseBackgroundMusic];
5,预先加载背景音乐
[[SimpleAudioEngine sharedEngine] preloadBackgroundMusic];
使用CDAudioManager来更改音乐的属性(更改属性之前必须有背景音乐在播放)
6,更改音量(音量大小从0到1)
[CDAudioManager sharedManager].backgroundMusic.volume = 1.0f;
7,循环播放N次背景音乐
[CDAudioManager sharedManager].backgroundMusic.numberOfLoops = N;
8,背景音乐停止时触发事件
[[CDAudioManager sharedManager] setBackgroundMusicCompletionListener:self
selector:@selector()];
相关文章推荐
- Cocos2d-android游戏引擎-介绍
- Cocos2d-X游戏【泰然网《跑酷》】JS到C++移植2:如何新建一个项目,引擎目录结构介绍
- Cocos2d-android游戏引擎-介绍
- TexturePacker图片打包工具——简单介绍+简单制作图片集教程——cocos2d-x游戏开发引擎图片制作必备
- Cocos2d-x 游戏引擎介绍
- cocos2d-android游戏引擎介绍、下载
- Cocos2d手机游戏引擎介绍
- cocos2d-x游戏引擎基础知识介绍(一)
- 【iOS-cocos2d游戏引擎开发之一】搭建cocos2d游戏引擎环境,创建第一个HelloWorld!
- 【Cocos2d-x游戏引擎开发笔记(17)】实现运动的尾巴效果
- cocos2d-x游戏引擎核心之十——网络通信
- 手机游戏引擎的选择--学习游戏开发Cocos2d-x和Unity3D/2D哪个前景更好?更易上手?
- 学习实战三:基于Cocos2d-x引擎模仿微信打飞机游戏
- 护鱼者(FishesProtector)——基于cocos2d-x for xna引擎的wp游戏
- 实例介绍Cocos2d-x物理引擎:使用关节
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第九课: Cocos2D-X引擎框架4
- 【cocos2d-x制作别踩白块儿】第一期:游戏介绍
- Cocos2d-x JSB + Cocos2d-html5 跨平台游戏开发(一)—— 引擎选择
- 【Cocos2D-X 游戏引擎】初窥门径(1) 制作一个动态的精灵
- 基于cocos2d-x引擎的游戏框架设计