该例子用的是cocosd -iphone 如果是cocos2d-x则用CC MoveBy CC....即可
Action就好像给一个cocosNode对象的命令。这些动作通常用来改变物体的属性,例如位置,旋转,缩放等。如果这些属性在一段时间只能被修改的话,那么这中叫做 IntervalAction 的Action。否则,它们叫做InstantAction 的动作。
例如:MoveBy 动作,在一段时间之内,改变了位置这个属性 ,也就是说它是一个IntervalAction的Action。
Example:
# 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 有一些很有趣的属性
你可以使用pause/resume 来停止和恢复action
# Pause actions
[[ActionManager sharedManager ] pauseAllActionsForTarget:sprite ] ;
# resume actions
[[ActionManager sharedManager ] resumeAllActionsForTarget:sprite ] ;
以下的每一个动作,除了极为简单的,我都会加入一个简单的事例,以及描述下将会发生的情况。毕竟,都是物体移动,简单上图片,很难表示清楚究竟发生了什么。尤其是那个jump函数。。动作好多。。呵呵。
简单应用,对一个box精灵进行移动测试:
-(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;
}
有些动作,还是需要自己实现了才知道函数是怎么个意思,对于e文的api,不如普通的那种顺利,大多都是些C#里面少使用的东西。有些陌生。
例子:
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];
Almost all actions have the reverse method implemented. Basically it creates a new action with the reverse behavior.
Example:
id move = [MoveBy actionWithDuration:2 position: ccp(80,80)];
id move_reverse = [move reverse];
The move_reverse action will be a MoveBy action of duration 2, but with the position value of ccp(-80,-80).
Attetion plz:
本系列文章原形来自于cocos2d的官方wiki,本人进行翻译整理,并加入个人心得,及其很多额外代码补充实现。
原文网址:http://www.cnblogs.com/AlexLiu/archive/2010/01/24/1655222.html