zoukankan      html  css  js  c++  java
  • 动作之其他动作

    第一部分: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. {

    3.     ActionsDemo::onEnter();

    4.

    5.     centerSprites(1);

    6.     CCSize s = CCDirector::sharedDirector()->getWinSize();

    7.

    8.     m_grossini->setPosition(CCPointMake(-200, s.height / 2));

    9.     CCActionInterval* move      = CCMoveBy::actionWithDuration(2, CCPointMake(s.width * 3, 0));

    10.    CCActionInterval* move_back = move->reverse();

    11.    CCFiniteTimeAction* seq       = CCSequence::actions(move, move_back, NULL);

    12.    CCAction* rep               = CCRepeatForever::actionWithAction((CCActionInterval*)seq);

    13.

    14.    m_grossini->runAction(rep);

    15.

    16.    this->runAction(CCFollow::actionWithTarget(m_grossini, CCRectMake(0, 0, s.width * 2 - 100, s.height)));

    17.}

    第二部分:CCDelayTime延时动作

    CCDelayTime是一个延时若干秒的动作,最常见的用法就是在一个CCSequence序列动作中,打入若干延时时间,让动作的执行速度慢下来,不至于眼花缭乱,让人反应不过来。

    cocos2d-x中的tests里,有类似的例子,代码如下:

    1. void ActionDelayTime::onEnter()

    2. {

    3.     ActionsDemo::onEnter();

    4.

    5.     alignSpritesLeft(1);

    6.

    7.     CCActionInterval* move = CCMoveBy::actionWithDuration(1, CCPointMake(150,0));

    8.     CCFiniteTimeAction* action = CCSequence::actions( move, CCDelayTime::actionWithDuration(2), move, NULL);

    9.

    10.    m_grossini->runAction(action);

    11.}

    第三部分:CCProgressFromToCCProgressTo 进度动作

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

    注意进度动作的执行节点为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. {

    3.             SpriteDemo::onEnter();

    4.             

    5.             CCSize s = CCDirector::sharedDirector()->getWinSize();

    6.             

    7.             CCProgressTo *to1 = CCProgressTo::actionWithDuration(2, 100);

    8.             CCProgressTo *to2 = CCProgressTo::actionWithDuration(2, 100);

    9.             

    10.            CCProgressTimer *left = CCProgressTimer::progressWithFile(s_pPathSister1);

    11.            left->setType( kCCProgressTimerTypeHorizontalBarLR );//设置动作类型

    12.            addChild(left);

    13.            left->setPosition(CCPointMake(100, s.height/2));

    14.            left->runAction( CCRepeatForever::actionWithAction(to1));

    15.            

    16.            CCProgressTimer *right = CCProgressTimer::progressWithFile(s_pPathSister2);

    17.            right->setType( kCCProgressTimerTypeHorizontalBarRL );//设置动作类型

    18.            addChild(right);

    19.            right->setPosition(CCPointMake(s.width-100, s.height/2));

    20.            right->runAction( CCRepeatForever::actionWithAction(to2));

    21.}

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

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

    CCTiledGrid3DAction:基于Tiled的网格动作

    CCGrid3DAction:普通网格动作

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

  • 相关阅读:
    【JAVA零基础入门系列】Day3 Java基本数据类型
    【JAVA零基础入门系列】Day2 Java集成开发环境IDEA
    【JAVA零基础入门系列】Day1 开发环境搭建
    易语言 【寻找文本】命令的bug
    类的进化史
    C++指针类型识别正确姿势
    C++ 编写DLL文件给易语言调用
    C++中的显式类型转化
    CC++ 1A2B小游戏源码
    C语言dll文件的说明以及生成、使用方法
  • 原文地址:https://www.cnblogs.com/yssgyw/p/3430236.html
Copyright © 2011-2022 走看看