首先看一下之前介绍过切换场景的代码:
CCScene* pScene = TestLayer::scene(); CCDirector::sharedDirector()->pushScene(pScene); CCDirector::sharedDirector()->popScene(); CCDirector::sharedDirector()->replaceScene(pScene);用以上切换场景的方法只会进行普通的切换场景,一闪而过,立刻变成第二个场景。而Cocos2d-x中为我们提供了一些场景切换的特效,实现各种动画切换的效果。在利用特效的时候,内存中会留有两个场景类的对象,占用内存空间是正常运行的两倍。
这些特效是通过特效类CCTransitionScene来实现的,派生关系如下图所示:
如何使用场景特效呢?首先创建一个我们想要切换到场景,然后把待切换到的场景当作参数创建一个我们想使用的特效,之后使用场景特效作为参数传入CCDirector的方法中进行场景切换。
下面举几个例子:
1、CCTransitionCrossFade
CCTransitionCrossFade:效果:慢慢淡化到另一个场景。
CCTransitionCrossFade* CCTransitionCrossFade::create(float duration,CCScene* scene):第一个参数为过度动作的时间,第二个参数为切换到目标场景的对象。
CCScene* scene = TestLayer::scene(); CCTransitionScene* effect = CCTransitionCrossFade::create(1.5,scene); CCDirector::sharedDirector()->replaceScene(effect);2、CCTransitionFade
CCTransitionFade:效果:本场景变暗消失后另一场景慢慢出现。
CCTransitionFade* CCTransitionFade::create(float duration,CCScene* scene):第一个参数为过度动作的时间,第二个参数为切换到目标场景的对象。
CCScene* scene = TestLayer::scene(); CCTransitionScene* effect = CCTransitionFade::create(1.5,scene); CCDirector::sharedDirector()->replaceScene(effect);3、CCTransitionFadeTR
CCTransitionFadeTR:效果:本场景中从中间到四个角处消失,出现另一场景。
CCTransitionFadeTR* CCTransitionFadeTR::create(float t,CCScene* scene):第一个参数为过度动作的时间,第二个参数为切换到目标场景的对象。
CCScene* scene = TestLayer::scene(); CCTransitionScene* effect = CCTransitionFadeTR::create(1.5,scene); CCDirector::sharedDirector()->replaceScene(effect);
其实还有许多场景特效,等慢慢总结
原文链接:https://www.f2er.com/cocos2dx/342890.html