cocos2d-x学习笔记13:动作4:其他动作

简介:

第一部分:CCFollow跟随动作

CCFollow动作,可以让一个节点跟随另一个节点做位移。

他有两个静态工厂方法,后者可以设置一个跟随范围,离开范围就不再跟随。
 
  1. bool    initWithTarget (CCNode *pFollowedNode) 
  2. bool    initWithTarget (CCNode *pFollowedNode, const CCRect &rect) 

CCFollow经常用来设置layer跟随sprite,可以实现类似摄像机跟拍的效果。cocos2d-x中的tests里,有类似的例子,代码如下:
 
  1. void ActionFollow::onEnter() 
  2.     ActionsDemo::onEnter(); 
  3.  
  4.     centerSprites(1); 
  5.     CCSize s = CCDirector::sharedDirector()->getWinSize(); 
  6.  
  7.     m_grossini->setPosition(CCPointMake(-200, s.height / 2)); 
  8.     CCActionInterval* move      = CCMoveBy::actionWithDuration(2, CCPointMake(s.width * 3, 0)); 
  9.     CCActionInterval* move_back = move->reverse(); 
  10.     CCFiniteTimeAction* seq       = CCSequence::actions(move, move_back, NULL); 
  11.     CCAction* rep               = CCRepeatForever::actionWithAction((CCActionInterval*)seq); 
  12.  
  13.     m_grossini->runAction(rep); 
  14.  
  15.     this->runAction(CCFollow::actionWithTarget(m_grossini, CCRectMake(0, 0, s.width * 2 - 100, s.height))); 


第二部分:CCDelayTime延时动作
CCDelayTime是一个延时若干秒的动作,最常见的用法就是在一个CCSequence序列动作中,打入若干延时时间,让动作的执行速度慢下来,不至于眼花缭乱,让人反应不过来。
 
cocos2d-x中的tests里,有类似的例子,代码如下:
 
  1. void ActionDelayTime::onEnter() 
  2.     ActionsDemo::onEnter(); 
  3.  
  4.     alignSpritesLeft(1); 
  5.  
  6.     CCActionInterval*  move = CCMoveBy::actionWithDuration(1, CCPointMake(150,0)); 
  7.     CCFiniteTimeAction*  action = CCSequence::actions( move, CCDelayTime::actionWithDuration(2), move, NULL); 
  8.  
  9.     m_grossini->runAction(action); 


第三部分:CCProgressFromTo与CCProgressTo 进度动作

进度动作,也是一种从无到有逐渐绘制的动作,和淡入淡出的作用类似。

注意进度动作的执行节点为CCProgressTimer,而非我们常用的CCSprite。我们在使用进度动作时,需要指定绘制类型。
 
cocos2d-x一种提供了6种类型的枚举值:
 
 
  1. typedef enum { 
  2.             /// Radial Counter-Clockwise 逆时针 
  3.             kCCProgressTimerTypeRadialCCW, 
  4.             /// Radial ClockWise 顺时针 
  5.             kCCProgressTimerTypeRadialCW, 
  6.             /// Horizontal Left-Right 从左往右 
  7.             kCCProgressTimerTypeHorizontalBarLR, 
  8.             /// Horizontal Right-Left 从右往左 
  9.             kCCProgressTimerTypeHorizontalBarRL, 
  10.             /// Vertical Bottom-top 从下往上 
  11.             kCCProgressTimerTypeVerticalBarBT, 
  12.             /// Vertical Top-Bottom 从上往下 
  13.             kCCProgressTimerTypeVerticalBarTB, 
  14. } CCProgressTimerType; 
 
cocos2d-x中的tests里,有全部的进度动作的例子,其中按时针绘制的例子代码如下:
 
 
  1. void SpriteProgressToHorizontal::onEnter() 
  2.             SpriteDemo::onEnter(); 
  3.              
  4.             CCSize s = CCDirector::sharedDirector()->getWinSize(); 
  5.              
  6.             CCProgressTo *to1 = CCProgressTo::actionWithDuration(2, 100); 
  7.             CCProgressTo *to2 = CCProgressTo::actionWithDuration(2, 100); 
  8.              
  9.             CCProgressTimer *left = CCProgressTimer::progressWithFile(s_pPathSister1); 
  10.             left->setType( kCCProgressTimerTypeHorizontalBarLR );//设置动作类型 
  11.             addChild(left); 
  12.             left->setPosition(CCPointMake(100, s.height/2)); 
  13.             left->runAction( CCRepeatForever::actionWithAction(to1)); 
  14.              
  15.             CCProgressTimer *right = CCProgressTimer::progressWithFile(s_pPathSister2); 
  16.             right->setType( kCCProgressTimerTypeHorizontalBarRL );//设置动作类型 
  17.             addChild(right); 
  18.             right->setPosition(CCPointMake(s.width-100, s.height/2)); 
  19.             right->runAction( CCRepeatForever::actionWithAction(to2)); 

第四部分:CCGridAction 网格动作家族

网格动作,是一种特殊的变换效果,类似于特效,可以实现全屏幕的,翻转,抖动,震荡,水波纹等。CCGridAction是所有网格动作的基类,他有两个派生类
CCTiledGrid3DAction:基于Tiled的网格动作
CCGrid3DAction:普通网格动作

这些动作的相关例子,都在cocos2d-x的tests中的EffectsTest里。因为用法简单,但是数量庞大,又不是特别常用,而且效果用语言很难准确描述,就不赘述了。直接看代码就行。

 




 本文转自 老G 51CTO博客,原文链接:http://blog.51cto.com/goldlion/767613,如需转载请自行联系原作者

相关文章
|
vr&ar 图形学
【Unity3D 灵巧小知识点】 ☀️ | Unity中 使用代码 激活/取消激活 某个游戏对象的方法
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、r美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。
【Unity3D 灵巧小知识点】 ☀️ | Unity中 使用代码 激活/取消激活 某个游戏对象的方法
|
C++ 开发者 iOS开发
Cocos2d-x-v3动作体系
Cocos2d-x-v3动作体系
377 0
|
图形学
Unity 事件函数的执行顺序
在 Unity 脚本中,有许多事件函数在脚本执行时按预定的顺序执行。这个执行顺序如下所述: 首个场景加载这些函数在场景开始时调用(对于场景中的每个对象调用一次)。 Awake:在所有 Start 函数之前,以及 prefab 实例化之后调用。
2211 0
|
算法
《编程原本 》一2.5 动作
本节书摘来自华章出版社《编程原本 》一书中的第2章,第2.5节,作者(美)斯特潘诺夫(Stepanov, A.),(美)麦克琼斯(McJones, P.),更多章节内容可以访问云栖社区“华章计算机”公众号查看
1053 0