继续玩下学习中。。。
addChild(grossini, 0, kTagGrossini); .//添加到layer中去,并指定了tag 方便后续找到他
auto action = MoveBy::create(1, Vec2(150,0)); //创建一个移动动作
auto director = Director::getInstance();
director->getActionManager()->addAction(action, grossini, true);//这个类基本区别就在这里了 介绍了另外一种添加动作的方式 并且第三个参数指定了暂停
schedule( schedule_selector(PauseTest::unpause), 3); // 自定义一个定时器 每三秒执行一次回调
}
void PauseTest::unpause(float dt)
{
unschedule( schedule_selector(PauseTest::unpause) );//删除定时器
auto node = getChildByTag( kTagGrossini );//找到对应的那个节点
auto director = Director::getInstance();
director->getActionManager()->resumeTarget(node);//恢复动作
}
继续看下一个动作
auto pMove = MoveBy::create(2, Vec2(200, 0));
auto pCallback = CallFunc::create(CC_CALLBACK_0(StopActionTest::stopAction,this));
auto pSequence = Sequence::create(pMove, pCallback, nullptr);//这里创建动作序列,跟前面有一点点区别
pSequence->setTag(kTagSequence); //主要区别就在这里了 给动作序列添加了一个标志
auto pChild = Sprite::create(s_pathGrossini);
pChild->setPosition( VisibleRect::center() );
addChild(pChild, 1, kTagGrossini); //添加节点并且增加标志
pChild->runAction(pSequence);
}
void StopActionTest::stopAction()
{
auto sprite = getChildByTag(kTagGrossini);//根据节点标志获取到节点
sprite->stopActionByTag(kTagSequence);//根据动作标志 停止所有动作
}
继续看下一个动作
auto pGrossini = Sprite::create(s_pathGrossini);
addChild(pGrossini, 0, kTagGrossini);
pGrossini->setPosition(VisibleRect::center());
pGrossini->runAction(ScaleBy::create(2, 2)); //执行一个缩放动作
auto director = Director::getInstance();
director->getActionManager()->pauseTarget(pGrossini); //暂停所有动作
pGrossini->runAction(RotateBy::create(2, 360));//执行一个旋转动作(这里并不会马上执行 因为这个对象已经暂停了所有动作)
this->schedule(schedule_selector(ResumeTest::resumeGrossini), 3.0f);//自定义一个定时器
}
void ResumeTest::resumeGrossini(float time)
{
this->unschedule(schedule_selector(ResumeTest::resumeGrossini));//删除定时器
auto pGrossini = getChildByTag(kTagGrossini);
auto director = Director::getInstance();
director->getActionManager()->resumeTarget(pGrossini);//恢复动作
}
第一个test终于看完了。。。