cocos2dx场景切换动画
在Cocos2d-x开发中,场景切换动画是经常会用到的功能。本文将结合实际代码,为大家介绍32种Cocos2d-x场景切换动画。
初始化场景
首先,我们需要创建一个场景并进行初始化。以下是HelloWorld类的init方法的代码:
bool HelloWorld::init()
{
// 1. 首先调用父类的初始化方法
if (!CCLayer::init())
{
return false;
}
// 获取窗口大小
CCSize size = CCDirector::sharedDirector()->getWinSize();
// 创建背景精灵
CCSprite *sp = CCSprite::create("background1.png");
sp->setPosition(ccp(size.width / 2, size.height / 2));
this->addChild(sp);
// 创建文本标签
CCLabelTTF *label = CCLabelTTF::create("点击按钮切换", "", 20);
label->setColor(ccc3(255, 0, 255));
// 创建菜单项
CCMenuItemLabel *itemLabel = CCMenuItemLabel::create(label, this, menu_selector(HelloWorld::changeScene));
// 创建菜单
CCMenu *menu = CCMenu::create(itemLabel, NULL);
this->addChild(menu);
return true;
}
在上述代码中,我们创建了一个背景精灵和一个文本标签,并将文本标签添加到菜单项中,最后将菜单项添加到菜单中。当用户点击菜单时,会调用changeScene方法进行场景切换。
场景切换方法
以下是changeScene方法的代码,其中包含了32种不同的场景切换动画:
void HelloWorld::changeScene()
{
CCTransitionScene *reScene = NULL;
CCScene *s = TestLayer::scene();
float t = 1.2f;
// 1. CCTransitionJumpZoom
// 作用:创建一个跳动的过渡动画
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionJumpZoom::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 2. CCTransitionProgressRadialCCW
// 作用:创建一个扇形条形式的过渡动画,逆时针方向
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionProgressRadialCCW::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 3. CCTransitionProgressRadialCW
// 作用:创建一个扇形条形式的过渡动画,顺时针方向
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionProgressRadialCW::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 4. CCTransitionProgressHorizontal
// 作用:创建一个水平条形式的过渡动画
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionProgressHorizontal::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 5. CCTransitionProgressVertical
// 作用:创建一个垂直条形式的过渡动画
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionProgressVertical::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 6. CCTransitionProgressInOut
// 作用:创建一个由里向外扩展的过渡动画
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionProgressInOut::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 7. CCTransitionProgressOutIn
// 作用:创建一个由外向里扩展的过渡动画
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionProgressOutIn::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 8. CCTransitionCrossFade
// 作用:创建一个逐渐透明的过渡动画
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionCrossFade::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 9. CCTransitionPageTurn
// 作用:创建一个翻页的过渡动画
// 参数1:过渡动作持续的时间
// 参数2:切换的目标场景的对象
// 参数3:是否逆向翻页
// reScene = CCTransitionPageTurn::create(t, s, false);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 10. CCTransitionFadeTR
// 作用:创建一个从左下到右上的过渡动画
// 参数1:过渡动作持续的时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionFadeTR::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 11. CCTransitionFadeBL
// 作用:创建一个从右上到左下的过渡动画
// 参数1:过渡动作持续的时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionFadeBL::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 12. CCTransitionFadeUp
// 作用:创建一个从下到上,条形折叠的过渡动画
// 参数1:过渡动作持续的时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionFadeUp::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 13. CCTransitionFadeDown
// 作用:创建一个从上到下,条形折叠的过渡动画
// 参数1:过渡动作持续的时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionFadeDown::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 14. CCTransitionTurnOffTiles
// 作用:创建一个随机方格消失的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionTurnOffTiles::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 15. CCTransitionSplitRows
// 作用:创建一个分行划分切换的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionSplitRows::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 16. CCTransitionSplitCols
// 作用:创建一个分列划分切换的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionSplitCols::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 17. CCTransitionFade
// 作用:创建一个逐渐过渡到目标颜色的切换动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// 参数3:目标颜色
// reScene = CCTransitionFade::create(t, s, ccc3(255, 0, 0));
// CCDirector::sharedDirector()->replaceScene(reScene);
// 18. CCTransitionFlipX
// 作用:创建一个x轴反转的切换动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// 参数3:反转类型的枚举变量(左右上下)
// kOrientationDownOver, kOrientationLeftOver, kOrientationRightOver, kOrientationUpOver
// reScene = CCTransitionFlipX::create(t, s, kOrientationRightOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 19. CCTransitionFlipY
// 作用:创建一个y轴反转的切换动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// 参数3:反转类型的枚举变量(左右上下)
// reScene = CCTransitionFlipY::create(t, s, kOrientationDownOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 20. CCTransitionFlipAngular
// 作用:创建一个带有反转角的切换动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// 参数3:反转类型的枚举变量(左右上下)
// reScene = CCTransitionFlipAngular::create(t, s, kOrientationLeftOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 21. CCTransitionZoomFlipX
// 作用:创建一个带有缩放的x轴反转切换的动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// 参数3:反转类型的枚举变量(左右上下)
// reScene = CCTransitionZoomFlipX::create(t, s, kOrientationLeftOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 22. CCTransitionZoomFlipY
// 作用:创建一个带有缩放的y轴反转切换的动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// 参数3:反转类型的枚举变量(左右上下)
// reScene = CCTransitionZoomFlipY::create(t, s, kOrientationDownOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 23. CCTransitionZoomFlipAngular
// 作用:创建一个带有缩放和反转角的切换动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// 参数3:反转类型的枚举变量(左右上下)
// reScene = CCTransitionZoomFlipAngular::create(t, s, kOrientationRightOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 24. CCTransitionShrinkGrow
// 作用:创建一个放缩交替的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionShrinkGrow::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 25. CCTransitionRotoZoom
// 作用:创建一个旋转放缩交替的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionRotoZoom::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 26. CCTransitionMoveInL
// 作用:创建一个从左边推入覆盖的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionMoveInL::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 27. CCTransitionMoveInR
// 作用:创建一个从右边推入覆盖的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionMoveInR::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 28. CCTransitionMoveInB
// 作用:创建一个从下边推入覆盖的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionMoveInB::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 29. CCTransitionMoveInT
// 作用:创建一个从上边推入覆盖的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionMoveInT::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 30. CCTransitionSlideInL
// 作用:创建一个从左侧推入并顶出旧场景的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionSlideInL::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 31. CCTransitionSlideInR
// 作用:创建一个从右侧推入并顶出旧场景的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionSlideInR::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 32. CCTransitionSlideInT
// 作用:创建一个从顶部推入并顶出旧场景的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionSlideInT::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// 33. CCTransitionSlideInB
// 作用:创建一个从下部推入并顶出旧场景的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
reScene = CCTransitionSlideInB::create(t, s);
CCDirector::sharedDirector()->replaceScene(reScene);
}
在上述代码中,每种场景切换动画都有详细的注释,说明了其作用和参数。你可以根据需要取消相应代码的注释,来使用不同的场景切换动画。
通过以上步骤,你可以在Cocos2d-x项目中实现各种场景切换动画。希望本文对你有所帮助!