10.【cocos2d翻译系列】Actions, Transformations and Effects--Special actions

Special Actions


CallFunc / CallBlock 系列动作


CallFunc

CCCallFunc动作允许你调用一个方法作为一个动作。这个在顺序执行动作序列(sequence)的末尾是非常有用的。
例如:
id actionTo =  [ CCMoveTo actionWithDuration:  2  position:  ccp( s.width- 40, s.height - 40) ] ;
id actionBy =  [ CCMoveBy actionWithDuration:  2  position:  ccp( 80, 80) ] ;
id actionCallFunc =  [ CCCallFunc actionWithTarget: self selector : @selector( doATask) ] ;
 
id actionSequence =  [ CCSequence actions :  actionTo, actionBy, actionCallFunc,  nil ] ;
 
- ( void)  doATask
{
//some code
}

CallFuncN 和 CallFuncND动作

这里有两个CCCallFunc的变种。就是CCCallFuncN和CCCallFuncND。
CCCallFuncN会将当前节点(Node)作为参数,并且CCCallFuncND会将节点和一些数据的指针作为参数传入。
例如:
id actionCallFuncN =  [ CCCallFuncN actionWithTarget : self 
selector : @selector( doATaskN : ) ] ; // make sure you notice the trailing :
id actionCallFuncND  =  [ CCCallFuncND actionWithTarget: self 
selector : @selector( doATaskND: data: )  data : pointerToSomeData] ;
 
-  ( void)  doATaskN:  ( id) node
{
//some code
}
 
-  ( void)  doATaskND :  ( id) node data: ( void* ) d
{
//some code
}

CallBlock / CallBlockN

v0.99.2版本之后
// BCA is cocos2d macro that means: Block Copy Autorelease
// CCCallBlock (no arguments)
id blockAction  =  [ CCCallBlock actionWithBlock: BCA ( ^ {
      [ label setString: @ "Called Block!" ] ;
} ) ] ;
 
// CCCallBlockN (passes the Node as an argument)
void ( ^ block) ( CCNode * )  =   BCA ( ^ ( CCNode * n )  {
      // do something generic with node
      CCLOG( @ "called block for %@" , n ) ;
} ) ;

id blockAction2 =  [ CCCallBlockN actionWithBlock : block]


CCFollow

v0.99.2版本之后

模拟一个摄像机。被跟踪的节点将会显示在屏幕中央。
// create an sprite
id sprite  =  [ CCSprite xxxx ] ;
 
[ self addChild : sprite ] ;
 
[ self runAction:  [ CCFollow actionWithTarget: sprite 
worldBoundary : CGRectMake( 0 , 0 , ( winSize.width * 2 ) - 100 , winSize.height) ] ] ;

CCPropertyAction

v0.99.2版本之后
这是一个通用的动作,它可以让你修改objective-c类的任意属性。

 // It will modify the "rotation" property from 0 to -270 in 2 seconds, and  then it will run the reverse action.
 id rot =  [ CCPropertyAction actionWithDuration: 2  key: @ "rotation"  from: 0  to :-270 ];
 id rot_back =  [ rot reverse ] ;
 id rot_seq =  [ CCSequence actions : rot, rot_back, nil ] ;







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值