知易Cocos2D-iPhone 游戏开…

         从本章开始,我们开始讲解Cocos2d-iPhone库的动作(Action)。游戏的世界是一个动态的世界:无论是主角精灵还是NPC精灵都是处于不断的运动当中;甚至是背景中的飘落的树叶,随风而动的小草。这些明显的或者不明显的运动构成了我们栩栩如生的游戏世界。

仔细研究游戏中精灵的运动,我们发现:所有这样的运动都可以细分为若干个基本动作和基本动作的组合动作。进一步通过动作扩展,我们可以将同一精灵的更多动作和不同精灵之间的不同动作连贯起来,形成关于整个运动世界的连续模拟。

我们给出示例ZYG003,展示Cocos2D-iPone支持的主要动作:

 

基本动作

       从技术上来说,基本动作的本质就是改变某个图形对象的属性:位置,角度,大小等。根据改变的内容和方式的不同,Cocos2d-iPhone的基本动作可以分为19种。根据改变完成所需要的时间,可以分为延时动作和瞬时动作。其中,延时动作的执行速度又可以按照不同的方式来改变(位置、大小、颜色、闪烁)。因此,我们可以从3个角度来掌握Cocos2d-iPhone提供的基本动作:瞬时动作、延时动作、动作速度。

       再进一步介绍具体基本动作之前,我们先来简单明确一下动作是如何与CocosNode关联起来的。CocosNode有一个方法叫runAction

       定义为: - (Action*) runAction:

 

(Action *) 

action

 

       此接口的导入确保所有的精灵都可以执行各种动作。也正是为了服从这个接口的定义,导致后续各种组合动作也都从Action对象派生。该函数从0.8.0开始,不再 retain action 指针。因此,如果要重复使用某个动作,需要考虑手工 retain

       下面的代码是通常调用某个动作的方法:

// 创建动作

id actionTo = [CCMoveTo actionWithDuration: 2 position:ccp(s.width-40, s.height-40)];

  

// 使用动作。(说明:tamara是一个CCSprite。)

[tamara runAction: actionTo];

接下来,我们从以下3个方面介绍基本动作。

瞬时动作

       顾名思义。瞬时动作就是不需要时间,马上就完成的动作。瞬时动作的共同基类是InstantAction

 

Cocos2d-iPhone提供以下瞬时动作:(示例代码G04中的CCInstantActionLayer实现了下面的代码):

 

l  放置 – Place

效果类似于node.Position = ccp(x, y)。之所以作为一个动作来实现是为了可以与其他动作形成一个连续动作。下面为示例代码:

- (void) OnPlaceMenue:(id) sender

{

   CGSize s = [[CCDirector sharedDirector] winSize];

   CGPoint p = ccp(CCRANDOM_0_1() * s.width, CCRANDOM_0_1() * s.height);

  

   [sprite runAction:[CCPlace actionWithPosition:p]];

}

l  隐藏 – Hide

效果类似于 [node setVisible:NO]. 之所以作为一个动作来实现是为了可以与其他动作形成一个连续动作。下面为示例代码:

- (void) OnHideMenue:(id) sender

{

   [sprite runAction:[CCHide action]];

}

l  显示 – Show

效果类似于 [node setVisible:YES]. 之所以作为一个动作来实现是为了可以与其他动作形成一个连续动作。下面为示例代码:

- (void) OnShowMenue:(id) sender

{

   [sprite runAction:[CCShow action]];   

}

l  可见切换 – ToggleVisibility

代码如下:

- (void) OnToggleMenue:(id) sender

{

   [sprite runAction:[CCToggleVisibility action]]; 

}

还有几个较为特殊的二个(网格重用 – ReuseGrid、停止网格 – StopGrid)我们后面介绍。

延时动作

       延时动作就是指动作的完成需要一定时间。因此,actionWithDuration是延时动作执行时的第一个参数,延时动作的共同基类是CCIntervalAction(包含了组合动作类)

      

 

Cocos2d-iPhone提供以下瞬时动作:(示例代码G04中的IntervalActionLayer实现了下面的代码)。函数命名规则是

XxxxTo: 意味着运动到指定的位置。

XxxxBy:意味着运动到按照指定的xy增量的位置。(xy可以是负值)

 

l  移动到 – CCMoveTo

l  移动– CCMoveBy

l  跳跃到 – CCJumpTo

设置终点位置和跳跃的高度和次数。

l  跳跃 – CCJumpBy

设置终点位置和跳跃的高度和次数。

l  贝塞尔 – CCBezierBy

支持3次贝塞尔曲线:P0-起点,P1-起点切线方向,P2-终点切线方向,P3-终点。

 

首先设置定Bezier参数,然后执行。

l  放大到 – CCScaleTo

设置放大倍数,是浮点型。

l  放大 – CCScaleBy

l  旋转到 – CCRotateTo

l  旋转 – CCRotateBy

l  闪烁 – CCBlink

设定闪烁次数

l  色调变化到 – CCTintTo

l  色调变换 – CCTintBy

l  变暗到 – CCFadeTo

l  由无变亮 – CCFadeIn

l  由亮变无 – CCFadeOut

 

...

 

如果您对本文感兴趣,可以到这里下载完整PDF示例源代码下载

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值