cocos2d-x 学习笔记3

时间:2021-05-12 23:31:57

-------------------------------Action函数的使用-----------------------------------------------------------------------------------------------
 auto role = Sprite::create("s1.png");

addChild(role);
role->setPosition(visibleSize / 2);

role->setScale(0.6);



//MoveTo函数 (所用时间,目的地的坐标 ps:用Vec2)MoveBy函数(所用时间,路程 ps:用Vec2(向量))
//role->runAction(MoveTo::create(3, Vec2(visibleSize.width, visibleSize.height / 2)));




/*

auto move1 = MoveTo::create(3, Vec2(visibleSize.width, visibleSize.height / 2));
auto move2 = MoveBy::create(3, Vec2(-visibleSize.width, -visibleSize.height / 2));

//runAction函数实现先后执行动作。 如下参数依次为(动作1,动作2,***,NULL)
role->runAction(Sequence::create(move1, move2, NULL));

*/



/*

auto move1 = MoveBy::create(3, Vec2(-visibleSize.width, -visibleSize.height / 2));

//动作的反转函数,实现如下,调用对象的reverse函数,实现相反的动作(ps:并不是所有的动作都能够反转)
auto move2 = move1->reverse();

role->runAction(Sequence::create(move1, move2, NULL));

*/




auto move = MoveTo::create(3, Vec2(visibleSize.width, visibleSize.height / 2));

auto scale = ScaleTo::create(3, 2);

//runAction实现同时执行多个动作 。 如下 ,参数依次为(动作1,动作2,***,NULL)
role->runAction(Spawn::create(move, scale, NULL));

-----------------------------------------------------------分割线---------------------------------------------------------------------

                                                               Action特效
 PS:要使用action特效 需要用 NodeGrid::creat 来创建对象 然后用addchild(Sprite::creat());

 //创建NodeGrid对象
 auto role = NodeGrid::create();

 //在对象里面加入精灵- -
 role->addChild(Sprite::create("s1.png"));

 //缩放2倍
 role->setScale(2);

 role->setPosition(visibleSize / 2);

 addChild(role);


 // 3D波浪抖动 参数依次为(时间,网格Size(横,纵),震动幅度,false)
 //role->runAction(ShakyTiles3D::create(3, Size(50, 50), 3, false));

 
 // 和上面的函数相同。只是不显示网格的抖动
 //role->runAction(Shaky3D::create(3, Size(50, 50), 3, false));


 //  爆炸特效。使对象爆裂成N*N个小方块 参数依次为(时间,网格Size(横,纵),3);ps:最后一个参数没搞懂- -
; //role->runAction(ShuffleTiles::create(1, Size(50, 50), 3));

 /*
 //将两个动作先后执行
 auto shaky = ShakyTiles3D::create(2, Size(20, 20), 8, false);

 auto shuffle = ShuffleTiles::create(0.8, Size(20, 20), 5);

 role->runAction(Sequence::create(shaky,shuffle,NULL));

 */

 
 // 碎片消失函数 参数依次为 参数依次为(时间,网格Size(横,纵)25);ps:最后一个参数没搞懂- -
 //role->runAction(TurnOffTiles::create(2, Size(50, 50), 25));

 
 //波浪函数  参数依次为(时间,网格Size(横,纵),抖动速度,抖动幅度)
 role->runAction(Waves3D::create(5, Size(50, 50), 10, 50));

----------------------------------------------分割线------------------------------------------------------------------------------------------------------

                                             场景切换及特效

 
 

 auto background = Sprite::create("s3.jpg");

 background->setPosition(visibleSize / 2);

 background->setScale(6);

 addChild(background);


 调用scheduleOnce函数
 scheduleOnce([visibleSize](float f){
 
  auto newscene = Scene::create();

  auto background2 = Sprite::create("s2.jpg");

  background2->setPosition(visibleSize / 2);

  background2->setScale(6);

  newscene->addChild(background2);

  //PS:以下特效的create 返回值是一个新场景 应该将放入replace里而不是 原来的场景
  //auto effect = TransitionCrossFade::create(2, newscene);
   //效果淡入淡出 参数为(时间,新场景)
  //auto effect = TransitionZoomFlipAngular::create(2, newscene);  //效果反转 参数为(时间,新场景)
  //auto effect = TransitionPageTurn::create(2, newscene,true);
  //效果翻页 参数为(时间,新场景,bool 决定上页或者下页)
  //auto effect = TransitionProgressRadialCCW::create(2, newscene);
 //效果顺时针 参数为(时间,新场景)
  auto effect = TransitionSplitRows::create(2, newscene);
  //效果左右切换 参数为(时间,新场景)
  //切换场景的方法
  Director::getInstance()->replaceScene(effect);

   },1, "Test");

----------------------------------------------------------------------------------------------------------------------