cocos2dx之如何实现场景过度效果TransitionScene

               cocos2dx之实现场景过度效果Transition

 

       大家好,我是Lampard

      今天与大家探讨一下场景之间切换时的特效类Transition类

  

      如何让场景之间切换时更加炫酷?各种场景切换特效很想拥有?现在,它来啦!!!

      下面是cocos2dx引擎3.x版本的场景切换特效:

//慢慢淡化到另一场景

TransitionCrossFade::create(时间,目标场景); 

  

//本场景变暗消失后另一场景慢慢出现

TransitionFade::create(时间,目标场景); 

  

//本场景右上角到左下角方块消失到另一场景

TransitionFadeBL::create(时间,目标场景); 

  

//本场景从上到下横条消失到另一场景

TransitionFadeDown::create(时间,目标场景); 

  

//本场景左下角到右上角方块消失到另一场景

TransitionFadeTR::create(时间,目标场景); 

  

//本场景从下到上横条消失到另一场景

TransitionFadeUp::create(时间,目标场景); 

  

//本场景翻转消失到另一场景(斜上方)

TransitionFlipAngular::create(时间,目标场景,样式 );

  

//本场景翻转消失到另一场景(X轴)

TransitionFlipX::create(时间,目标场景,样式);

  

//本场景翻转消失到另一场景(Y轴)

TransitionFlipY::create(时间,目标场景); 

  

//本场景跳动消失后另一场景跳动出现

TransitionJumpZoom::create(时间,目标场景); 

  

//另一场景由整体从下面出现

TransitionMoveInB::create(时间,目标场景); 

  

//另一场景由整体从左面出现

TransitionMoveInL::create(时间,目标场景); 

  

//另一场景由整体从上面出现

TransitionMoveInT::create(时间,目标场景); 

  

//另一场景由整体从右面出现

TransitionMoveInR::create(时间,目标场景); 

  

//翻页切换,bool为true是向前翻。

TransitionPageTurn::create(时间,目标场景,bool); 

  

//本场景从左到右消失同时另一场景出现

TransitionProgressHorizontal::create(时间,目标场景);

  

//本场景从中间到四周消失同时另一场景出现

TransitionProgressInOut::create(时间,目标场景); 

  

//本场景从四周到中间消失同时另一场景出现

TransitionProgressOutIn::create(时间,目标场景); 

  

//本场景逆时针消失到另一场景

TransitionProgre***adialCCW::create(时间,目标场景); 

  

//本场景顺时针消失到另一场景

TransitionProgre***adialCW::create(时间,目标场景); 

  

//本场景从上到下消失同时另一场景出现

TransitionProgressVertical::create(时间,目标场景); 

  

//本场景旋转消失后另一场景旋转出现

TransitionRotoZoom::create(时间,目标场景); 

  

//本场景缩小切换到另一场景放大

TransitionShrinkGrow::create(时间,目标场景); 

  

//本场景向上滑动到另一场景

TransitionSlideInB::create(时间,目标场景); 

  

//本场景向右滑动到另一场景

TransitionSlideInL::create(时间,目标场景); 

  

//本场景向左滑动到另一场景

TransitionSlideInR::create(时间,目标场景); 

  

//本场景向下滑动到另一场景

TransitionSlideInT::create(时间,目标场景); 

  

//本场景三矩形上下消失后另一场景三矩形上下出现

TransitionSplitCols::create(时间,目标场景); 

  

//本场景三矩形左右消失后另一场景三矩形左右出现

TransitionSplitRows::create(时间,目标场景); 

  

//本场景小方块消失到另一场景

TransitionTurnOffTiles::create(时间,目标场景); 

  

//本场景翻转消失到另一场景(斜上方)

TransitionZoomFlipAngular::create(时间,目标场景,样式); 

  

//本场景翻转消失到另一场景(X轴)

TransitionZoomFlipX::create(时间,目标场景,样式); 

  

//本场景翻转消失到另一场景(Y轴)

TransitionZoomFlipY::create(时间,目标场景,样式);

特效有很多,但是使用起来却一点也不复杂:

我们只需要创建一个场景,创建一个特效的对象,并把场景以及播放特效的时间传给特效对象即可。

 

聊到场景切换特效,那么就不得不讨论一下在场景切换之间内存处理的顺序是怎么样的

假设从A场景切换到B场景,调用各场景方法的顺序为:

如果没有切换效果(transition),则先调用B的init(),接着调用A的onExit(),然后调用B的onEnter()

如果有切换效果(transition),则为先调用B的init(),接着调用B的onEnter(),然后调用A的onExit()

也就是说,在调用了场景切换的特效时,A的生存周期会长一些,而这很可能会造成卡顿

 

最终解决方法:把init的一些加载放在inEnter()中使得更快的执行完init,把之前的场景释放

把一些资源的初始化放到onEnter中进行,那么究竟应该把那些资源放到onEnter中初始化,而那些资源又只能放到init中呢?

(1)像背景图这种只能放到init中,像场景切换时要看到的一些精灵,必须放到init中,不然场景切换时会看不到精灵。

(2)象精灵的一些动画,动作,可以放到onEnter中来初始化。

 

至此我们的场景切换特效已经完成,谢谢大家!!!
 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Cocos2d-x中实现流光效果可以使用shader来进行渲染。首先,我们需要创建一个自定义的shader,并将其应用于需要实现流光效果的节点上。 在使用Cocos2d-x的过程中,我们可以使用GLSL语言编写shader代码。在实现流光效果的shader中,我们可以通过改变像素的颜色和透明度来创建流动的效果。 首先,我们定义一个uniform变量time,用于控制流光的移动速度。然后,在片段着色器中,通过改变颜色和透明度的计算公式来实现流动的效果。我们可以使用sin函数或者其他数学函数来计算出每个像素点的颜色和透明度,然后将其应用到节点上。 在节点的渲染流程中,我们将这个自定义的shader应用到节点上,然后传入时间参数,即更新uniform变量time的值。随着时间的增加,我们就可以看到节点上的流光效果在不断地移动。 为了实现更加逼真的流光效果,我们可以尝试给流光添加一些额外的效果,比如模糊、叠加等。通过调整shader代码中的计算公式和传入的参数,我们可以根据自己的需求来调整流光效果的强度和样式。 总结起来,在Cocos2d-x中实现流光效果需要创建一个自定义的shader,并将其应用于需要实现效果的节点上。通过改变颜色和透明度的计算公式、传入时间参数等,我们可以实现一个流光效果,使节点看起来具有流动的动画效果

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lampard杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值