cocos2dx如何添加popScene的场景动画

说明

我们很容易在pushScene中添加动画

Director::getInstance()->pushScene(TransitionSlideInB::create(SCENE_TIME, scene));

可是popScene没有提供动画

Director::getInstance()->popScene();

网上有人说用replaceScene来代替pushScenepopScene,可是replaceScene直接把之前的场景替换掉了,而没有pushScene可以达到之前场景暂停的效果。还有人说先runAction,然后在用一个回调函数调用popScene,这样做也有问题,就是要出现的场景还是没有动画。

解决方法

我们可以在CCDirector.hvoid popScene();函数下面添加以下代码

template <class T>
void popSceneWithTransition(float t)
{
    CCASSERT(_runningScene != nullptr, "running scene should not null");

    _scenesStack.popBack();
    ssize_t c = _scenesStack.size();

    if (c == 0)
    {
        end();
    }
    else
    {
        _sendCleanupToScene = true;
        Scene* scene = T::create(t, _scenesStack.at(c - 1));
        _scenesStack.replace(c - 1, scene);
        _nextScene = scene;
    }
}

调用的时候这样写

Director::getInstance()->popSceneWithTransition<TransitionSlideInT>(SCENE_TIME);

测试截图

原文章

cocos2dx如何添加popScene的场景动画

转载请注明:Sollyu博客 » cocos2dx如何添加popScene的场景动画

cocos2dx如何添加popScene的场景动画

时间: 2024-07-30 19:22:19

cocos2dx如何添加popScene的场景动画的相关文章

cocos2d-x android 添加新场景报错: undefined reference to `vtable for XXX&#39;

转载自 居家懒人 http://www.cnblogs.com/JD85/archive/2012/09/17/2688128.html 加入写了新场景SecondScene,结果在cpp文件里类名地方报错说undefined reference to `vtable for SecondScene', 很简单,貌似是每个新场景都要先注册一下,找到jni-->Classes目录下的Android.mk文件,在 LOCAL_SRC_FILES := AppDelegate.cpp HelloWor

cocos2d-x 3.0 导演,场景,层,精灵

导演(Director) 一款游戏好比一部电影,只是游戏具有更强的交互性,不过它们的基本原理是一致的.所以在Cocos2dx中把统筹游戏大局的类抽象为导演(Director),Director是整个cocos2dx引擎的核心,是整个游戏的导航仪,游戏中的一些常用操作就是由Director来控制的,比如OpenGL ES的初始化,场景的转换,游戏暂停继续的控制,世界坐标和GL坐标之间的切换,对节点(游戏元素)的控制等,还有一些游戏数据的保存调用,屏幕尺寸的获取等都要由Director类来管理控制的

Cocos2d-X研究之3.0 场景切换特效汇总

Cocos2d-X研究之3.0 场景切换特效汇总 2014-08-05      0个评论    来源:游戏编程    收藏    我要投稿 cocos2d-x 3.0中场景切换特效比较多,而且游戏开发中也经常需要用到这些特效,来使场景切换时不至于那么干巴,遂这里汇总一下,开发中使用. 场景切换用到导演类Directory,大多数用的都是替换场景,当然也可以用出栈进栈的方式来进行场景的替换,这里以replaceScene来举例.3.0事件分发机制—触摸事件监听不明白的可以看下. 场景切换特效的应

游戏开发之UE4添加角色到场景中

接着上次继续学习,现在我们已经有了一个场景并且运行了,我们需要添加一个角色到场景中.要这样做,我们必须从UE4的GameFramework类继承它. 一. 创建一个从Character类继承的类 从基本框架类继承是很简单的: 1) 在项目中打开你的UE4编辑器. 2) 在文件,选择"新建C++类". 3) 这里你可以选择从Pawn类(Pawn类从控制器接收输入)继承或从Actor类继承.不过我们可以这里选择从Character类(角色)继承. 4) 点击继续,然后你可以命名这个类.这里

移动web:翻页场景动画

在移动web,特别是在微信中,经常看到一种翻页动画效果,也称为场景动画. 一页一页的翻过,像在看书,每页的内容以各种"炫酷"的效果出现在你的眼里,配上一首动听的音乐,你有没有喜欢上呢. 这里没有音乐,没有炫酷的出场,只有实实在在的翻页.z 先看看效果(如果不能查看 复制下面的代码保存在本地查看) <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta

cocos2dx 游戏开发中常用场景切换方式以及特性

runWithScene(CCScene* scene):启动游戏,并运行scene 场景.这个方法在主程序启动时第一次启动主场景时调用. replaceScene(CCScene* scene):直接使用传入的scene 替换当前场景来切换画面,当前场景将被释放.这是切换场景时 最常用的方法. pushScene(CCScene* scene):在不释放旧场景内存的情况下运行新场景,推进新场景相当于在当前可见的纸上再放一张纸,而之前的纸位置何持不变.适用情况: 1.推进一个经常被用到的场景,例

[cocos2dx笔记007]一个自定义场景切换的实例

cocos2dx框架已经提供了很多场景切换的类,但是一些自定义的场景切换,只有自己实现了.下面是实现的类.这里设计的分辨率是750*500.请根据实际的要求调整. 头文件 #ifndef _TRANSITION_GAME_H_ #define _TRANSITION_GAME_H_ #include <cocos2d.h> namespace cocos2d { class CCTransitionGame : public CCTransitionScene { public: CCTran

把商品添加到购物车的动画效果(贝塞尔曲线)

如图: 参考: Android补间动画,属性动画实现购物车添加动画 思路: 确定动画的起终点 在起终点之间使用二次贝塞尔曲线填充起终点之间的点的轨迹 设置属性动画,ValueAnimator插值器,获取中间点的坐标 将执行动画的控件的x.y坐标设为上面得到的中间点坐标 开启属性动画 当动画结束时的操作 难点: PathMeasure的使用 - getLength() - boolean getPosTan(float distance, float[] pos, float[] tan) 的理解

cocos2d-x 精灵添加描边效果

学习cocos2d-x 以来一直对里面的shader部分感兴趣,今天正好花了点时间来研究一下精灵的描边效果. 主要参考了子龙山人大神的TestCpp里面例子并结合自己的理解,实现相对比较简单.主要是根据引擎内部自带的shader相关代码来实现的. 好了废话不多说看代码: 1.首先需要打开CCShaderCache.cpp文件修改里面部分代码,添加我们描边的效果. 在此枚举值里面加入:kShaderType_LabelOutline 2.然后在 voidShaderCache::loadDefau