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);
  • 相关阅读:
    CGO入门和OCR文字识别(非第三方API,有源码,效果好)实战
    Golang中如何正确的使用sarama包操作Kafka?
    音量强度转分贝db
    ShowDialog()弹出的窗体,关闭后,主窗体会闪烁的BUG
    小鱼提问3 static方法中可以访问某个类的私有变量吗(不通过反射的其他非正常手段)?什么情况下可以?
    “-="的陷阱
    c++ 从一个BYTE[] *filePtr 追加二进制文件
    Android解决程序切换后台被干掉,恢复状态问题
    Cookie
    dede后台搜索标签
  • 原文地址:https://www.cnblogs.com/damowang/p/4856110.html
Copyright © 2011-2022 走看看