Cocos2d-3.x Action介绍

举报
鱼酱 发表于 2022/01/07 00:16:30 2022/01/07
【摘要】 我们在做游戏的时候,或是我们在玩游戏的时候有以下几点我认为是非常重要的       1.游戏效果   2.游戏的画风  3.游戏耐玩性 其中游戏的效果有一个很重要的要素,这里就包含 游戏中人物的...

 1.游戏效果 

 2.游戏的画风 

3.游戏耐玩性

其中游戏的效果有一个很重要的要素,这里就包含 游戏中人物的动作(Action)。有时候我们说这个游戏这个技能真帅啊,这指的有两点,技能的效果帅和动作帅。

下面我领大家来看看官方的Demo


一、下载解压官方的框架



            之前写过的博客已经介绍了,   传送门 http://blog.csdn.net/hiwoshixiaoyu/article/details/51472707





二、我们运行一下官方的例子

      我们最好卸载掉一些别的工程,加快我们的编译速度,C++编译速度很慢的


三、打开我们的官方例子



代码如下,已经加上了注释


  
  1. //------------------------------------------------------------------
  2. //
  3. // Test1
  4. //
  5. //------------------------------------------------------------------
  6. void CrashTest::onEnter()
  7. {
  8. ActionManagerTest::onEnter();
  9. //创建精灵 s_pathGrossini是什么呢?static const char s_pathGrossini= "Images/grossini.png";
  10. auto child = Sprite::create(s_pathGrossini);
  11. //设置到屏幕中心点
  12. child->setPosition( VisibleRect::center() );
  13. //添加的逻辑必须
  14. /**
  15. * 添加一个child(带有z order和tag)到一个容器里
  16. *
  17. *如果这个child是被添加到一个运行中的节点,然后onEnter和onEnterTransitionDidFinish将会被调用
  18. * @param child 一个child 节点.
  19. * @param localZOrder Z order 是为了描画的顺序的
  20. * @param tag 一个整形很容易确定节点.
  21. */
  22. addChild(child, 1, kTagGrossini);
  23. //Sum of all action's duration is 1.5 second.
  24. //旋转 90度 ,持续1.5秒
  25. child->runAction(RotateBy::create(1.5f, 90));
  26. //DelayTime这个参数是推迟这个动作 1.4秒
  27. //FadeOut淡出 1.1秒
  28. child->runAction(Sequence::create(
  29. DelayTime::create(1.4f),
  30. FadeOut::create(1.1f),
  31. nullptr)
  32. );
  33. //1.5秒后将会移除这个动作
  34. child->runAction(Sequence::create(
  35. DelayTime::create(1.4f),
  36. CallFunc::create(CC_CALLBACK_0(CrashTest::removeThis, this)),
  37. nullptr)
  38. );
  39. }
  40. void CrashTest::removeThis()
  41. {
  42. //通过Tag号获取了 节点
  43. auto child = getChildByTag(kTagGrossini);
  44. //将节点删除
  45. child->removeChild(child, true);
  46. //运行下一个例子
  47. getTestSuite()->enterNextTest();
  48. }
  49. std::string CrashTest::subtitle() const
  50. {
  51. return "Test 1. Should not crash";
  52. }
  53. //------------------------------------------------------------------
  54. //
  55. // Test2
  56. //
  57. //------------------------------------------------------------------
  58. void LogicTest::onEnter()
  59. {
  60. ActionManagerTest::onEnter();
  61. //创建精灵
  62. auto grossini = Sprite::create(s_pathGrossini);
  63. //将精灵加到层上
  64. addChild(grossini, 0, 2);
  65. //添加到中心点
  66. grossini->setPosition(VisibleRect::center());
  67. //移动到 (150,0)点 ,时间为5秒
  68. //CC_CALLBACK_1(LogicTest::bugMe,this) 五秒之后调用的函数
  69. grossini->runAction( Sequence::create(
  70. MoveBy::create(5, Vec2(150,0)),
  71. CallFuncN::create(CC_CALLBACK_1(LogicTest::bugMe,this)),
  72. nullptr)
  73. );
  74. }
  75. void LogicTest::bugMe(Node* node)
  76. {
  77. node->stopAllActions(); //After this stop next action not working, if remove this stop everything is working
  78. node->runAction(ScaleTo::create(2, 2));//放大倍x和y轴,也就是图片放大2倍
  79. }

四、我领着大家看看效果吧,我特意放慢了速度

   Test1

   

   Test2



五、总结

      对于Demo的Action总结

                  1.创建精灵

                  2.加载精灵到层上

                  3.创建动作

                 4. 精灵调用runAction 传递一个动作的参数

 

     学习方法之我的建议

          1. 我们在学习cocos2d的时候,遇到不会的方法可以去看看  框架中的注释

          2.查看官方Api   传送门    http://api.cocos.com/

         3.搜索一些博客,然后 看看继承图

文章来源: yujiang.blog.csdn.net,作者:鱼酱2333,版权归原作者所有,如需转载,请联系作者。

原文链接:yujiang.blog.csdn.net/article/details/51494670

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。