Cocos2d-3.x Action介绍

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

 1.游戏效果 

 2.游戏的画风 

3.游戏耐玩性

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

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


一、下载解压官方的框架



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





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

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


三、打开我们的官方例子



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


      //------------------------------------------------------------------
      //
      // Test1
      //
      //------------------------------------------------------------------
      void CrashTest::onEnter()
      {
          ActionManagerTest::onEnter();
     	//创建精灵 s_pathGrossini是什么呢?static const char s_pathGrossini= "Images/grossini.png"; 
         auto child = Sprite::create(s_pathGrossini);
     	//设置到屏幕中心点
          child->setPosition( VisibleRect::center() );
        //添加的逻辑必须 
        /**
       * 添加一个child(带有z order和tag)到一个容器里
       *
       *如果这个child是被添加到一个运行中的节点,然后onEnter和onEnterTransitionDidFinish将会被调用
       * @param child 一个child 节点.
       * @param localZOrder Z order 是为了描画的顺序的
       * @param tag 一个整形很容易确定节点.
       */
     	addChild(child, 1, kTagGrossini);
         //Sum of all action's duration is 1.5 second.
     	//旋转 90度 ,持续1.5秒
          child->runAction(RotateBy::create(1.5f, 90));
     	//DelayTime这个参数是推迟这个动作 1.4秒
     	//FadeOut淡出 1.1秒
          child->runAction(Sequence::create(
                                                  DelayTime::create(1.4f),
                                                  FadeOut::create(1.1f),
                                                 nullptr)
                          );
         //1.5秒后将会移除这个动作
      	child->runAction(Sequence::create(
      		DelayTime::create(1.4f),
      		CallFunc::create(CC_CALLBACK_0(CrashTest::removeThis, this)),
     		nullptr)
      		);
      }
      void CrashTest::removeThis()
      {
     	//通过Tag号获取了 节点
         auto child = getChildByTag(kTagGrossini);
     	//将节点删除
          child->removeChild(child, true);
     	//运行下一个例子
         getTestSuite()->enterNextTest();
      }
      std::string CrashTest::subtitle() const
      {
         return "Test 1. Should not crash";
      }
      //------------------------------------------------------------------
      //
      // Test2
      //
      //------------------------------------------------------------------
      void LogicTest::onEnter()
      {
          ActionManagerTest::onEnter();
     	//创建精灵
         auto grossini = Sprite::create(s_pathGrossini);
     	//将精灵加到层上
         addChild(grossini, 0, 2);
     	//添加到中心点
          grossini->setPosition(VisibleRect::center());
     	//移动到 (150,0)点 ,时间为5秒
     	//CC_CALLBACK_1(LogicTest::bugMe,this) 五秒之后调用的函数
          grossini->runAction( Sequence::create(
                                                      MoveBy::create(5, Vec2(150,0)),
                                                      CallFuncN::create(CC_CALLBACK_1(LogicTest::bugMe,this)),
                                                     nullptr)
                              );
      }
      void LogicTest::bugMe(Node* node)
      {
          node->stopAllActions(); //After this stop next action not working, if remove this stop everything is working
          node->runAction(ScaleTo::create(2, 2));//放大倍x和y轴,也就是图片放大2倍
      }
  
 

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

   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

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

    全部回复

    上滑加载中

    设置昵称

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

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

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