zoukankan      html  css  js  c++  java
  • cocos代码研究(7)即时动作子类学习笔记

    理论部分

    即时动作是会立即被执行的动作。他们没有持续时间动作(ActionInterval)的持续时间属性。
    继承自 FiniteTimeAction。被 CallFunc, FlipX, FlipY, Hide, Place, RemoveSelf, ReuseGrid, Show, StopGrid , 以及 ToggleVisibility 继承。

    • FlipX,FlipX可以立即水平翻转一个精灵。
    • FlipY,FlipY可以立即垂直翻转一个精灵。
    • Hide,隐藏动作用来立即隐藏一个节点。
    • Show,显示动作用来立即显示一个节点
    • Place,Place动作可以将节点放置在特定位置。
    • RemoveSelf,RemoveSelf动作用来删除执行动作的节点。
    • ReuseGrid,ReuseGrid重新使用网格动作。
    • ReuseGrid,StopGrid结束当前网格动作,将其移除。
    • ToggleVisibility,ToggleVisibility动作用来切换一个节点的可见性。
    • CallFunc调用一个回调函数。

    代码部分

    CallFunc类API

    static CallFunc* create (const std::function< void()> & func) //func 需要被执行的回调函数。
    用一个回调函数创建CallFunc动作,回调函数的类型是std::function<void()>。 这是创建回调函数的首选方法。 这个API绑定在js或lua中,输入参数会被改变。 lua: local create(local funcID)。

    static CallFunc* create (Ref * target, SEL_CallFunc selector)
    用下面的函数类型创建CallFunc动作 typedef void (Ref::*SEL_CallFunc)()。

    virtual void execute ()
    执行回调。

    Ref * getTargetCallback ()
    获取回调函数的执行主体。

    void setTargetCallback (Ref *sel)
    设置回调函数的执行主体。

    CallFuncN类

    CallFuncN类继承自CallFunc,使用节点作为第一个参数调用回调函数的CallFuncN动作,N代表节点。

    static CallFuncN * create (const std::function< void(Node *)> &func)
    用一个回调函数创建CallFunc动作,回调函数的类型是std::function<void()>。 这是创建回调的首选方法。

    实例:

    CallFuncN::create(CC_CALLBACK_1(CallFuncNTest1::onCallBackFunc, this))

    static CallFuncN * create (Ref *target, SEL_CallFuncN selector)
    用下面的方法创建CallFuncN动作。 typedef void (Ref::SEL_CallFuncN)(Node)。

    实例:

    auto action = CallFuncN::create(this, SEL_CallFuncN(CallFuncNTest::onCallBackFunc))

    FlipX类API
    static FlipX* create(bool x) //x 如果为true则水平翻转精灵,值为false时则恢复精灵原始状态。

    实例:

    auto action = FlipX::create(true);

    FlipY类API
    static FlipY * create(bool y) //y 如果为true则垂直翻转精灵,值为false时则恢复精灵原始状态。

    实例:

    auto action = FlipY::create(true)

    Hide类API
    static Hide* create()

    实例:

    auto hide = Hide::create();

    Show类API
    static Show* create()

    实例:

    auto show = Show::create();

    Place类API
    static Place * create (const Vec2 &pos) //pos 位置坐标

    实例:

    auto place = Place::create(Vec2(60,60));

    ToggleVisibility类API
    static ToggleVisibility* create() //
    实例:

    auto move1 = MoveBy::create(1, Vec2(250,0));
    auto move2 = MoveBy::create(1, Vec2(0,50));
    auto tog1 = ToggleVisibility::create();
    auto tog2 = ToggleVisibility::create();
    auto seq = Sequence::create( move1, tog1, move2, tog2, move1->reverse(), nullptr);
    auto action = Repeat::create(Sequence::create( seq, seq->reverse(), nullptr), 3);

    RemoveSelf类API

    static RemoveSelf * create (bool isNeedCleanUp=true) //isNeedCleanUp 是否需要清理,默认值是true。

    实例:

        auto action = Sequence::create(
            MoveBy::create( 2, Vec2(240,0)),
            RotateBy::create( 2,  540),
            ScaleTo::create(1,0.1f),
            RemoveSelf::create(),
            nullptr);
    
        _grossini->runAction(action);
  • 相关阅读:
    实践详细篇-Windows下使用Caffe训练自己的Caffemodel数据集并进行图像分类
    实践详细篇-Windows下使用VS2015编译的Caffe训练mnist数据集
    实践详细篇-Windows下使用VS2015编译安装Caffe环境(CPU ONLY)
    Linux上rpm实战搭建FTP服务器
    Idea打包Maven项目
    修改Idea默认的全局设置,如Maven等
    IntelliJ IDEA 项目结构旁边出现 0%classes,0% lines covered
    Idea中JDK为1.8,还提示Diamond types are not supported at this language level
    如何避免在父类转换到子类时发生java.lang.ClassCastException
    HashMap常用方法总结
  • 原文地址:https://www.cnblogs.com/damowang/p/4856110.html
Copyright © 2011-2022 走看看