理论部分
即时动作是会立即被执行的动作。他们没有持续时间动作(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);