看完第一个Test,就开始浮躁了,典型的三分钟热度。跑着到处看,这个看下那个看下,心不知道飘到哪去了。
坚持坚持,继续回来看第二个Test
还是先飘下头文件,大致更前面一个Test没多大区别,基类有点点区别
Sprite* _grossini;
Sprite* _tamara;
Sprite* _kathia; //保存三张贴图
void centerSprites(unsigned int numberOfSprites); //多了个调整精灵坐标函数,已经显示个数
void positionForTwo();//跟上面那个函数差不多,调整两个精灵坐标,隐藏一个精灵
继续 看cpp
前面还是一样的,一个枚举,三个切换函数,不多说,直接跳过
看看第一个SpriteEase
void SpriteEase::onEnter()
{
EaseSpriteDemo::onEnter();
auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130,0)); //创建一个移动动作
auto move_back = move->reverse();//创建个反向移动动作
auto move_ease_in = EaseIn::create(move->clone(), 2.5f); //创建个渐变(变慢)动作
auto move_ease_in_back = move_ease_in->reverse(); //前一个动作的反序
auto move_ease_out = EaseOut::create(move->clone(), 2.5f);//创建个渐变(变快)动作
auto move_ease_out_back = move_ease_out->reverse();//前一个动作的反序
auto delay = DelayTime::create(0.25f);
//组合一些动作成动作序列
auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr);
auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr);
auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr);
auto a2 = _grossini->runAction(RepeatForever::create(seq1)); //执行动作序列 并设置tag(标志吧)
a2->setTag(1);
auto a1 = _tamara->runAction(RepeatForever::create(seq2));
a1->setTag(1);
auto a = _kathia->runAction(RepeatForever::create(seq3));
a->setTag(1);
schedule(schedule_selector(SpriteEase::testStopAction), 26.25f);//自定义定时器
}
void SpriteEase::testStopAction(float dt)
{
unschedule(schedule_selector(SpriteEase::testStopAction));//删除定时器
_tamara->stopActionByTag(1);
_kathia->stopActionByTag(1);
_grossini->stopActionByTag(1);//根据标志来停止动作
}
个人总结:感觉这个示例作者是介绍了一个基本动作,渐变动作。 还有每个动作只能用一次,下次用要克隆来用,以避免内存问题