瘸腿蛤蟆笔记10-cocos2d-x-3.2精灵瞬时动作

转载标明出处:http://blog.csdn.net/notbaron/article/details/38351467

上篇回顾

         上篇中,蛤蟆学习了如何使用使用doxygen工具来创建离线的API手册。从此查找API函数就变得方便了。

         这次蛤蟆要学习精灵的动作,各种动作。当然动画和动作时不一样的。动画只是精灵图片的变化,而动作时引擎提供的函数我们可以直接使用之。走起。

 

理论介绍

                  先看类的继承如下图 1所示:

瘸腿蛤蟆笔记10-cocos2d-x-3.2精灵瞬时动作_第1张图片

         Action继承的地位是不是很眼熟。没错,就是和之前所讲的Animation类是一个层次的。他们应该算成同一辈的。Action分为 ActionTimeLine,FiniteTimeAction,Follow,Speed 4种。

ActionTimeLine 直译过来就是动作时间线 的意思(这个类蛤蟆找不到资料也, 回头蛤蟆知道了再做几笔。而且本次几笔主要是将后面三项动作嘛)

FinitTimeAction表示时间有限动作。

Follow表示 跟随动作,类似RPG游戏中的一个精灵跟随另一个精灵。

Speed表示 可以设置动作的速度。

         OK,我们来实践吧。我们先来操作下瞬时动作。

 

具体步骤

         我们还是使用HelloWolrd项目。还是在 、

bool HelloWorld::init()函数中加入代码:

       代码如下:

         auto grossini =Sprite::create("ball.png");

         grossini->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 +origin.y));

         addChild(grossini,1);

         //Sum of all action's duration is 1.5 second.      

         grossini->runAction(Sequence::create(

                  DelayTime::create(1.4f),

                   Place::create(Vec2(visibleSize.width/2+ origin.x+100, visibleSize.height/2 + origin.y+100)),

                   nullptr)

                   );

 

代码解释

         好的,我们现在一起看下代码吧

         auto grossini =Sprite::create("ball.png"); //首先创建一个精灵,通过图片ball.png

         grossini->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 +origin.y)); //设置精灵位置在屏幕正中间

         addChild(grossini,1);//添加精灵到HelloWorld层中

         grossini->runAction(Sequence::create(

                   DelayTime::create(1.4f),

                   Place::create(Vec2(visibleSize.width/2+ origin.x+100, visibleSize.height/2 + origin.y+100)),

                   nullptr)

                   ); //这个是一个复杂的函数,函数中包含函数,我们一一剖解之。

首先是精灵grossini调用runAction ,然后在runAction 中创建了Sequeuece。

Sequence表示将很多动作串联起来。这里串联了两个动作,一个是DelayTime表示延时几秒,一个Place表示瞬间移动到之前位置的右上方。最后需要一个nullptr来结束。

         这样grossini就是顺序执行延迟1.4秒,然后瞬间移动到右上方。

        

         其他的瞬时动画,小伙伴们需要尝试的话,只需要修改Place::create(Vec2(visibleSize.width/2+ origin.x+100, visibleSize.height/2 + origin.y+100)) 这个即可。

         例如改成 FlipY::create(1) 。

        

总结

         通过本笔记,我们学会精灵及基本动作,通过这些动作我们可以在游戏给我们的精灵设置各种动作了。不过其实一个游戏中常用的动作也就那么几个(这个纯属蛤蟆瞎猜)。

         蛤蟆想了下,感觉源码提供的cpp-tests非常不错,接下去学习该项目。这样大家可以非常容易的在cpp-tests中找到自己想要的代码了。

你可能感兴趣的:(瘸腿蛤蟆笔记10-cocos2d-x-3.2精灵瞬时动作)