iPhone游戏开发之Cocos2d中Actions介绍

移动开发 iOS 游戏开发
本文主要是来介绍iphone游戏开发中Cocos2d的Actions介绍,来学习Actions的使用方法,来看详细内容。

iPhone游戏开发中Cocos2dActions介绍是本文要介绍的内容,Action就好像给一个cocosNode对象的命令。这些动作通常用来改变物体的属性,例如位置,旋转,缩放等。如果这些属性在一段时间只能被修改的话,那么这中叫做 IntervalAction 的Action。否则,它们叫做InstantAction 的动作。

例如:MoveBy 动作,在一段时间之内,改变了位置这个属性 ,也就是说它是一个IntervalAction的Action。

  1. # Move a sprite 50 pixels to the right, and 10 pixels to the top over 2 seconds.  
  2. sprite runAction: [MoveBy actionWithDuration:2 position:ccp(50,10)]];  

IntervalAction 有一些很有趣的属性

它们可以通过时间改变来进行加速

  1. EaseIn   
  2. EaseOut   
  3. EaseInOut   
  4. Speed   
  5. Etc. (See the EaseActionsTest.m example for more info)  

所有相对的动作(以By结尾的)和一些绝对的动作(以 To结尾的)都有一个翻转的动作,执行了一个相反方向的操作。 你可以使用pause/resume 来停止和恢复action

  1.  # Pause actions  
  2. [[ActionManager sharedManager ] pauseAllActionsForTarget:sprite ] ;  
  3.  
  4. # resume actions  
  5. [[ActionManager sharedManager ] resumeAllActionsForTarget:sprite ] ;  

以下的每一个动作,除了极为简单的,我都会加入一个简单的事例,以及描述下将会发生的情况。毕竟,都是物体移动,简单上图片,很难表示清楚究竟发生了什么。尤其是那个jump函数。

简单应用,对一个box精灵进行移动测试:

  1.  -(id)init{  
  2.     self = [super init];  
  3.     if(nil!=self){  
  4.         isTouchEnabled = YES;  
  5.         boxSprite = [Sprite spriteWithFile:@"box.png"];  
  6.         [boxSprite setPosition:CGPointMake(25, 25)];  
  7.         [self addChild:boxSprite];  
  8.     }  
  9.  
  10.     return self;  
  11. }  
  12.  
  13. - (BOOL) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *) event  
  14. {  
  15.     UITouch *touch = [touches anyObject];  
  16.     CGPoint point = [touch locationInView: [touch view]];  
  17.     //动作的定义  
  18.     //position  
  19.     //MoveBy  
  20.     id moveByAction = [MoveBy actionWithDuration:2 position:ccp(30,50)];  
  21.     //动作的执行  
  22.     [boxSprite runAction:rotateByAction];  
  23.     return YES;  
  24. }  

基本的Actions

位置

  1. MoveBy   
  2. MoveTo   
  3. JumpBy   
  4. JumpTo   
  5. BezierBy   
  6. Place  

放大缩小

  1. ScaleBy   
  2. ScaleTo  

旋转

  1. RotateBy   
  2. RotateTo  

显示状态

  1. Show   
  2. Hide   
  3. Blink   
  4. ToggleVisibility  

透明度

  1. FadeIn   
  2. FadeOut   
  3. FadeTo   
  4. RGB  
  5. TintBy   
  6. TintTo  

例子

有些动作,还是需要自己实现了才知道函数是怎么个意思,对于e文的api,不如普通的那种顺利,大多都是些C#里面少使用的东西。有些陌生。

  1. //MoveBy  
  2. moveByAction = [MoveBy actionWithDuration:2 position:ccp(30,50)];  

每次执行,相应精灵位置x,y增加30,和50,时间是2秒之内,移动方式,缓慢移动

  1. //MoveTo  
  2. id moveToAction = [MoveTo actionWithDuration:3 position:[[Director sharedDirector]convertCoordinate:point]];  

每次执行,相应精灵移动到触摸位置,3秒之内,移动过去

  1. //JumpBy  
  2. jumpByAction = [JumpBy actionWithDuration:3 position:ccp(100,100) height:20 jumps:20];  

每次执行,在3秒之内,相对移动100,100,移动方式,以20作为跳跃高度,3秒之内,20次跳跃

  1. //JumpTo  
  2. jumpToAction = [JumpTo actionWithDuration:3 position:ccp(100,100) height:20 jumps:20];  

使用方式,同上。不同的是移动到100,100

  1. //BezierBy  
  2. bezierByAction = [BezierBy actionWithSize:2];   
  3. //ScaleBy  
  4. scaleByAction = [ScaleBy actionWithDuration:3 scaleX:0.5 scaleY:0.5];  

每次执行,3秒之内,精灵逐渐变为原来长宽的一半

  1. //ScaleTo  
  2. scaleToAction = [ScaleTo actionWithDuration:3 scaleX:0.4 scaleY:0.5];   
  3. //RotateBy  
  4. rotateByAction = [RotateBy actionWithDuration:3 angle:30.0];  

3秒之内,逐渐向右旋转30度。

  1.      //RotateTo  
  2. id rotateToAction = [RotateTo actionWithDuration:3 angle:30.0];   
  3.  
  4. CGSize s = [[Director sharedDirector] winSize];  
  5.  
  6. id actionTo = [MoveTo actionWithDuration: 2 position:ccp(s.width-40, s.height-40)];  
  7. id actionBy = [MoveBy actionWithDuration:2  position: ccp(80,80)];  
  8.  
  9. [sprite1 runAction: actionTo];  
  10. [sprite2 runAction:actionBy];  

回滚Actions

基本上都是以"reverse"开头的方法。就是实现某个Action的相反的动作。

  1. id move = [MoveBy actionWithDuration:2  position: ccp(80,80)];  
  2. id move_reverse = [move reverse]; 

上面的move_reverse Action是指将MoveBy Action在2秒钟移动到ccp(-80,-80)的位置。

小结:iPhone游戏开发之Cocos2dActions介绍的内容介绍完了,希望本文对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-08-11 14:22:47

iPhone游戏Cocos2D

2011-08-04 17:01:16

iPhone游戏开发 Cocos2d

2011-07-27 13:57:36

iPhone 游戏 Cocos2d

2011-07-27 17:07:06

iPhone 游戏 Cocos2d

2011-07-27 10:13:23

Cocos2D iPhone

2011-08-09 16:08:58

IOS游戏Cocos2d

2011-07-20 14:04:46

Cocos2d iPhone 游戏

2012-04-16 13:37:57

cocos2d

2011-07-27 14:48:21

iPhone Cocos2D 坐标

2011-08-08 11:26:39

Cocos2d 游戏 Class类

2011-08-22 10:49:42

Cocos2d 开发CCLayerTouch事件

2011-08-11 18:00:18

Cocos2d动作Action

2012-02-19 20:10:23

Cocos2d-x fCocos2dWindows Pho

2011-08-08 15:40:47

Cocos2d

2012-06-01 10:27:44

Cocos2d触摸分发原理

2011-07-08 16:27:52

Cocoa Cocos2d 动作

2011-08-02 15:37:48

Cocos2D UIAccelero

2011-08-11 17:52:01

Cocos2d游戏对象

2011-07-08 16:09:54

Cocoa Cocos2d 动作

2011-08-08 17:17:55

Cocos2D 坐标 OpenglES
点赞
收藏

51CTO技术栈公众号