zoukankan      html  css  js  c++  java
  • COCOS学习笔记--即时动作ActionInstant

    Cocos引擎中的动作类的关系图例如以下:

     

    能够看出,Action是继承自Ref类的,之前我的博客中也有讲过,Ref类是cocos2dx全部类的基类。动作类(Action)是全部动作的基类。它通过create()方法创建的一个对象代表一个动作

    动作类(Action)作为基类。实际上是一个接口,动作类的大多数实现类都派生于有限时间动作类(FiniteTimeAction)。

    在实际开发中我们通经常使用到两类动作:即时动作(ActionInstant)和持续动作(ActionInterval),它们均继承于有限时间动作类。

    注意,动作作用于Node,因此每一个create出来的动作对象都须要由Node对象运行。


    什么是即时动作?

    即时动作(ActionInstant)指可以立马完毕的动作,这类动作是在下一帧立马完毕的动作。也就是说即时动作是没有运行时间的,你一旦runAction()这个动作就会被立即运行。如设定位置、设定缩放等属性。把它们包装成动作后,可以与其它动作类组合为复杂动作。

    即时动作ActionInstant类的子类包含:

     


    接下来就举几个使用即时动作的样例:

    例1:比方要运行Place动作,Place是通过动作来改变node的位置,事实上和setPosition()效果一样:

    //创建一个place动作
    auto _placeAction = Place::create(Vec2(100,100));
    sprite->runAction(_placeAction);

    例2:再比方showhide。与setVisible()效果一样:

    //创建hide动作
    auto _hideAction = Hide::create();
    sprite->runAction(_hideAction);
    
    //创建show动作
    auto _showAction = Show::create();
    sprite->runAction(_showAction);

    例3:这里要着重说一个动作:CallFunc。这个动作须要绑定一个回调函数,CallFunc绑定回调函数有2种方法:

    方法1.绑定Lamada表达式:

    //创建CallFunc动作
    auto _callFuncAction = CallFunc::create([](){
        log("callfunc run finished");
    });
    sprite->runAction(_callFuncAction);

    方法2.绑定一个函数CCcallback

    1).首先在头文件声明callfunc动作的回调函数callfuncCallback

    void callfuncCallback();

    2).然后在.cpp中实现callfunc动作的回调函数callfuncCallback

    void HelloWorld::callfuncCallback()
    {
        log("callfuncCallback!");
    }

    3).最后将CCcallback函数绑定callfunc动作:

    auto _callFuncAction = CallFunc::create(CC_CALLBACK_0(HelloWorld::callfuncCallback,this));
    sprite->runAction(_callFuncAction);

    其它动作的也都是通过create()创建,之后一个node运行其runAction()方法,把动作作为參数传入运行。

     

     



    以上。

     

     

  • 相关阅读:
    Li Fei-fei写给她学生的一封信,如何做好研究以及写好PAPER(转载)
    OpenCV学习-——OpenCV永久配置(win7 64位+VS2012+OpenCV 2.4.6)
    Eclipse + Jdk配置Java编程环境
    BeautifulSoup安装与引用
    自动启动服务
    自动行列转置
    java-接口
    java基础-抽象类
    JAVA学习day 05 运算
    JAVA学习day 04 变量
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7144986.html
Copyright © 2011-2022 走看看