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);
时间: 2024-10-12 09:28:19

cocos代码研究(7)即时动作子类学习笔记的相关文章

cocos代码研究(5)Action学习笔记

理论部分 Action类也是cocos核心基础类之一,在游戏中起着非常重要的作用,继承自Ref,被 FiniteTimeAction(有限时间动作), Follow , 以及 Speed 继承. 有限时间动作可以划分成: 即时动作(ActionInstant),即时动作只能够立刻完成的动作,这类动作是在下一帧立刻完成的动作,如设定位置.设定缩放等.把它们包装成动作后,可以与其他动作类组合为复杂动作. 持续动作(ActionInterval),在规定的时间内,执行完成对象属性,位置,特效,序列动作

cocos代码研究(1)Node学习笔记

理论部分 Node类继承自Ref类,是cocos框架中基础底层的一个封装类,与画面渲染相关的类一般都是继承自该类,例如Scene,Layer,Sprite,Sprite3D,Label,SpriteBatchNode,MenuItem,ClippingNode,DrawNode,ParticleBatchNode, ParticleSystem等都是继承自Node类. 代码部分 父子节点关系API virtual void addChild (Node *child)添加一个子节点到容器内,z-

cocos代码研究(2)Layer学习笔记

auto layer = Layer::create(); /*************华丽分割线*************/ auto layer = LayerColor::create(Color4B(255, 0, 0, 255), 150, 150); /*************华丽分割线*************/ auto layer = LayerGradient::create(Color4B(255, 0, 0, 255), Color4B(255, 255, 0, 255

cocos代码研究(1)sprite学习笔记

各种方法创建Sprite和Animate //图片创建法 参数一:图片资源路径 参数二:Rect选区 auto sprite = Sprite::create("Images/grossini_dance_atlas.png", Rect(x, y, 85, 121)); addChild(sprite); /*************华丽分割线*************/ //BatchNode类纹理创建法 //参数一:纹理图片 参数二:容量(子节点数量上限) auto batchN

cocos代码研究(8)持续动作子类学习笔记

理论部分 时间间隔动作(ActionInterval)是一个在一段时间内执行的动作. 它有一个开始时间和完成时间.完成时间等于起始时间加上持续时间. ActionInterval的子类与位置有关的动作类:JumpBy,JumpTo,MoveBy,MoveTo,BezierBy,BezierTo,CardinalSplineBy,CardinalSplineTo与缩放有关的动作类:ScaleTo,ScaleBy,与旋转有关的动作类:RotateBy, RotateTo与倾斜有关的动作类SkewTo

cocos代码研究(6)有限时间动作类(FiniteTimeAction)学习笔记

理论部分 有限时间动作类继承自Action类,被 ActionInstant(即时动作) , 以及 ActionInterval(持续动作) 继承. 即时动作是会立即被执行的动作,被 CallFunc, FlipX, FlipY, Hide, Place, RemoveSelf, ReuseGrid, Show, StopGrid , 以及 ToggleVisibility 继承. 时间间隔动作(ActionInterval)是一个在一段时间内执行的动作. 它有一个开始时间和完成时间,完成时间等

cocos代码研究(14)Widget子类Button学习笔记

理论基础 表示一个按钮组件. 按钮可以被按下,或者点击, 并且在按下或者点击之后,可以由用户指定一个动作来执行,继承自 Widget. 代码部分 static Button * create ()创建一个空的按钮. static Button * create (const std::string &normalImage, //正常状态纹理的名字.const std::string &selectedImage="", //选中状态纹理名称.const std::st

cocos代码研究(25)Widget子类PageView学习笔记

基础理论 ListView控件是一个显示滚动项目列表的视图组. 列表项是通过使用addChild或insertDefaultItem插入到列表中的,继承自ScrollView. 代码实践 static ListView * create()创建一个空ListView. void setItemModel (Widget *model)设定一个ListView的模型. 当调用pushBackDefaultItem,该模型将作为一个蓝图,新副本将被插入到ListView控件. void pushBa

cocos代码研究(26)Widget子类RichView学习笔记

理论部分 一个显示多个RichElement的容器类. 我们可以使用它很容易显示带图片的文本,继承自 Widget. 代码实践 static RichText * create ()创建一个空的RichText void insertElement (RichElement *element, int index)在指定位置插入一个RichElement. void pushBackElement (RichElement *element)在容器最后插入一个RichElement. void