cocos2dx3.2 学习笔记(3)--ActionsEaseTest(1)

来源:互联网 发布:西科软件招聘 编辑:程序博客网 时间:2024/04/29 18:58

看完第一个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);//根据标志来停止动作
}

个人总结:感觉这个示例作者是介绍了一个基本动作,渐变动作。 还有每个动作只能用一次,下次用要克隆来用,以避免内存问题


0 0
原创粉丝点击