iPhone开发之游戏篇(2) --- cocos2d的Actions
来源:互联网 发布:软件系统实施方案模板 编辑:程序博客网 时间:2024/05/22 03:33
Actions
Action就好像给一个cocosNode对象的命令。这些动作通常用来改变物体的属性,例如位置,旋转,缩放等。如果这些属性在一段时间只能被修改的话,那么这中叫做 IntervalAction 的Action。否则,它们叫做InstantAction 的动作。
例如:MoveBy 动作,在一段时间之内,改变了位置这个属性 ,也就是说它是一个IntervalAction的Action。
12
# Move a sprite 50 pixels to the right, and 10 pixels to the top over 2 seconds.[sprite runAction: [MoveBy actionWithDuration:2 position:ccp(50,10)]];
- IntervalAction 有一些很有趣的属性
- 它们可以通过时间改变来进行加速
- EaseIn
- EaseOut
- EaseInOut
- Speed
- Etc. (See the EaseActionsTest.m example for more info)
- 所有相对的动作(以By结尾的)和一些绝对的动作(以 To结尾的)都有一个翻转的动作,执行了一个相反方向的操作。
你可以使用pause/resume 来停止和恢复action
12345
# Pause actions[[ActionManager sharedManager ] pauseAllActionsForTarget:sprite ] ;# resume actions[[ActionManager sharedManager ] resumeAllActionsForTarget:sprite ] ;
以下的每一个动作,除了极为简单的,我都会加入一个简单的事例,以及描述下将会发生的情况。毕竟,都是物体移动,简单上图片,很难表示清楚究竟发生了什么。尤其是那个jump函数。
简单应用,对一个box精灵进行移动测试:
12345678910111213141516171819202122232425
-(id)init{ self = [super init]; if(nil!=self){ isTouchEnabled = YES; boxSprite = [Sprite spriteWithFile:@"box.png"]; [boxSprite setPosition:CGPointMake(25, 25)]; [self addChild:boxSprite]; } return self;}- (BOOL) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *) event{ UITouch *touch = [touches anyObject]; CGPoint point = [touch locationInView: [touch view]]; //动作的定义 //position //MoveBy id moveByAction = [MoveBy actionWithDuration:2 position:ccp(30,50)]; //动作的执行 [boxSprite runAction:rotateByAction]; return YES;}
基本的Actions
位置
- MoveBy
- MoveTo
- JumpBy
- JumpTo
- BezierBy
- Place
放大缩小
- ScaleBy
- ScaleTo
旋转
- RotateBy
- RotateTo
显示状态
- Show
- Hide
- Blink
- ToggleVisibility
透明度
- FadeIn
- FadeOut
- FadeTo
RGB
- TintBy
- TintTo
例子
有些动作,还是需要自己实现了才知道函数是怎么个意思,对于e文的api,不如普通的那种顺利,大多都是些C#里面少使用的东西。有些陌生。
12
//MoveBy id moveByAction = [MoveBy actionWithDuration:2 position:ccp(30,50)];
每次执行,相应精灵位置x,y增加30,和50,时间是2秒之内,移动方式,缓慢移动
12
//MoveTo id moveToAction = [MoveTo actionWithDuration:3 position:[[Director sharedDirector]convertCoordinate:point]];
每次执行,相应精灵移动到触摸位置,3秒之内,移动过去
12
//JumpBy id jumpByAction = [JumpBy actionWithDuration:3 position:ccp(100,100) height:20 jumps:20];
每次执行,在3秒之内,相对移动100,100,移动方式,以20作为跳跃高度,3秒之内,20次跳跃
12
//JumpTo id jumpToAction = [JumpTo actionWithDuration:3 position:ccp(100,100) height:20 jumps:20];
使用方式,同上。不同的是移动到100,100
12
//BezierBy id bezierByAction = [BezierBy actionWithSize:2];
12
//ScaleBy id scaleByAction = [ScaleBy actionWithDuration:3 scaleX:0.5 scaleY:0.5];
每次执行,3秒之内,精灵逐渐变为原来长宽的一半
12
//ScaleTo id scaleToAction = [ScaleTo actionWithDuration:3 scaleX:0.4 scaleY:0.5];
12
//RotateBy id rotateByAction = [RotateBy actionWithDuration:3 angle:30.0];
3秒之内,逐渐向右旋转30度。
12
//RotateTo id rotateToAction = [RotateTo actionWithDuration:3 angle:30.0];
1234567
CGSize s = [[Director sharedDirector] winSize];id actionTo = [MoveTo actionWithDuration: 2 position:ccp(s.width-40, s.height-40)];id actionBy = [MoveBy actionWithDuration:2 position: ccp(80,80)];[sprite1 runAction: actionTo];[sprite2 runAction:actionBy];
回滚Actions
基本上都是以"reverse"开头的方法。就是实现某个Action的相反的动作。
12
id move = [MoveBy actionWithDuration:2 position: ccp(80,80)];id move_reverse = [move reverse];
上面的move_reverse Action是指将MoveBy Action在2秒钟移动到ccp(-80,-80)的位置。
- iPhone开发之游戏篇(2) --- cocos2d的Actions
- iPhone开发之游戏篇(3)--- cocos2d的Actions构成
- iPhone开发之游戏篇(1) --- cocos2d的基本概念
- iphone游戏开发之cocos2d
- cocos2d开发之动作(Actions)
- iphone游戏开发之cocos2d (一)cocos2d的安装和卸载
- iphone游戏开发之cocos2d(二)cocos2d的helloWorld解析
- 【iphone游戏开发】iphone-Cocos2d游戏开发之三:精灵表的详细讲解(二)小鸟眨眼睛
- 【iphone游戏开发】iphone-Cocos2d游戏开发之三:精灵表的详细讲解(二)小鸟眨眼睛
- 【iphone游戏开发】iphone-Cocos2d游戏开发之三:精灵表的详细讲解(二)小鸟眨眼睛
- [iphone游戏开发]iphone-Cocos2D游戏开发之二:精灵表的详细讲解(一)和Zwoptex工具
- 【iphone游戏开发】iPhone游戏开发之Cocos2d常用工具大全
- 【iphone游戏开发】iPhone游戏开发之Cocos2d常用工具大全
- 【iphone游戏开发】iPhone游戏开发之Cocos2d常用工具大全
- 《Cocos2D-iPhone 游戏开发之路》第2节 cocos2d-iphone V3.0发布
- Cocos2D开发的iPhone游戏的教程
- iPhone之使用Cocos2d来开发简单的IPhone游戏教程
- 【iphone游戏开发】iphone-Cocos2D游戏开发之二:精灵表的详细讲解(一)和Zwoptex工具的使用
- memcache/memcached/memcachedb 配置、安装
- iPhone开发之游戏篇(1) --- cocos2d的基本概念
- Chess
- new和malloc的区别和联系
- 【分治法】赛程安排问题
- iPhone开发之游戏篇(2) --- cocos2d的Actions
- iPhone开发之游戏篇(3)--- cocos2d的Actions构成
- 程序学习第十一天
- GDAL的RASTERIO
- C#.net--xml与Treeview
- c++ primers关联容器map代码总结
- undefined reference to `clock_gettime' 链接错误问题解决
- 自己动手写php web server
- 网络编程之nagle算法和TCP_NODELAY