3.3.3 场景间切换的动画

上一节介绍了使用replaceScene切换场景。很多时候,为了游戏效果,使UI更有动态,会在切换界面的过程中加入一些过程动画,如平移切换场景动画(见图3-10)、旋转切换场景动画(见图3-11)。

图3-10 平移切换场景动画

图3-11 旋转切换场景动画

正常的无过渡场景,如果尚未建立场景(游戏中的第一个场景),使用runWithScene函数即可以使用相应场景;如果是替换场景,则使用replaceScene函数替换相应的场景即可;而如果要使用场景间的切换效果,则需要使用相应的切换类,即在3.1节中介绍的CCTransitionScene子类的create函数(2.0版本之前是transitionWithDuration函数),生成相应场景。当然,不同效果的使用方法略有不同。

然后,通过replaceScene函数启动场景,也就是说给这个场景加了一个外包装类,然后再启动。那么,这个场景就不是直接显示了,而是在场景的效果动画播完以后进入场景,起到过渡的效果。

一般情况,CCTransitionScene子类的create函数有两个参数。第一个参数是特效的切换时间,直接生成一个CCTime类即可,例子中设定的时间是1~2s,对于很多场景的显示都很舒服,你也可以根据你的要求修改切换时间;第二个参数是要进入的场景。有的类会有第三个参数,如表3-6所示。

表3-6 切换场景动画类

其中,CCTransitionPageTurn类需要先设置摄像机,使用以下代码:

CCDirector::sharedDirector()->setDepthTest(true)

有三种特效需要检测OpenGL版本是否支持,如表3-7所示。使用如下代码检查,如果为真则不支持:

CCConfiguration::sharedConfiguration()->getGlesVersion()<=GLES_VER_1-0

表3-7 需要检测OpenGL版本的切换场景动画

tests项目的TransitionsTest文件夹中的是场景切换的示例。切换场景动画的使用步骤如下。

1)新建场景。

2)根据需要的新建场景的切换动画选择CCTransitionScene子类,通过create将之前建的场景传入其中,并设置其他参数。

3)调用CCDirector::sharedDirector()->replaceScene(第2步中定义的CCTransitionScene的子类)替换新场景。

下一节开始介绍布景层类CCLayer。