【Cocos2D-X游戏开发笔记2】自定义场景及场景切换效果

cocos2d-x 之 场景间切换效果 1.使用方法: 正常的无过渡场景的如果尚未建立场景(即游戏中的第一个场景),就是用pDirector->runWithScene(pScene);即可以使用相应场景,如果是替换场景,则使用CCDirector::sharedDirector()->replaceScene(this);替换相应的场景即可,而如果要使用场景间的切换效果来切换场景,则需要使用相应的切换方法即transitionW 阅读详情

自定义场景类MyGameLayer,代码如下:

MyGameLayer.h如下

#ifndef __MYGAMElAYER_SCENE_H__
#define __MYGAMElAYER_SCENE_H__
#pragma once
#include "cocos2d.h"
//使用cocos2d命名空间  
USING_NS_CC; 
class MyGameLayer :	public cocos2d::CCLayer
{
public:
	MyGameLayer(void);
	virtual ~MyGameLayer(void);
	static cocos2d::CCScene* scene();  
	virtual bool init(); 
	CREATE_FUNC(MyGameLayer);
};

#endif // __MYGAMElAYER_SCENE_H__

MyGameLayer.cpp如下

#include "MyGameLayer.h"
MyGameLayer::MyGameLayer(void)
{
}

MyGameLayer::~MyGameLayer(void)
{
}

//创建场景
cocos2d::CCScene* MyGameLayer::scene(){
	CCScene *scene = NULL;
	do{
		scene = CCScene::create();
		CC_BREAK_IF(!scene);  
		MyGameLayer *gLayer = MyGameLayer::create();//需要定义CREATE_FUNC(MyGameLayer)宏
		CC_BREAK_IF(!gLayer); 
		scene->addChild(gLayer);
	}while(0);
	return scene;
}

bool MyGameLayer::init(){
	bool ret =false;
	do{
		CC_BREAK_IF(!CCLayer::init());
		CCSprite *s = CCSprite::create("bg.png");
		s->setPosition(ccp(240,160));
		this->addChild(s,0);
		ret = true;
	}while(0);
	return ret;
}

如何切换到自定义的MyGameLayer?

HelloCpp工程中做如下修改:

1)HelloWorldScene.h引入头文件

#include "MyGameLayer.h"

2)修改HelloWorld::init,创建一个菜单,点击菜单后切换到自定义的MyGameLayer

bool HelloWorld::init()
{
    bool bRet = false;
    do 
    {
        CC_BREAK_IF(! CCLayer::init());
		//创建开始菜单项
		CCMenuItemImage *goNext = CCMenuItemImage::create("start1.png","start1.png",  
            this,menu_selector(HelloWorld::goNextScene));
		CCSize size = CCDirector::sharedDirector()->getWinSize();
		//创建菜单
		 CCMenu* pMenu = CCMenu::create(goNext, NULL);
		 pMenu->setPosition(ccp(size.width/2,size.height/2));
		this->addChild(pMenu, 1);

		CCLog("after init");
        bRet = true;
    } while (0);
    return bRet;
}
void HelloWorld::goNextScene(CCObject* pSender){
	CCLog("goNextScene");
	//跳转到游戏场景中
	//CCScene *gScene = MyGameLayer::scene();
	CCScene *s = MyGameLayer::scene();
	//CCDirector::sharedDirector()->replaceScene(s);

	//跳跃式,本场景先会缩小,新场景跳跃进来
	//CCDirector::sharedDirector()->replaceScene(CCTransitionJumpZoom::transitionWithDuration(3, s));  
	//依次测试其它切换效果
	//CCDirector::sharedDirector()->replaceScene(CCTransitionFade::transitionWithDuration(3, s));
	//CCDirector::sharedDirector()->replaceScene(CCTransitionFlipY::transitionWithDuration(3, s,kOrientationRightOver));
	//CCDirector::sharedDirector()->replaceScene(CCTransitionZoomFlipAngular::transitionWithDuration(3, s,kOrientationRightOver));
	CCDirector::sharedDirector()->replaceScene(CCTransitionTurnOffTiles::transitionWithDuration(3, s));
}

其它切换效果有:

CCTransitionJumpZoom::transitionWithDuration(t, s);//跳跃式,原场景先会缩小,新场景跳跃进来
CCTransitionFade::transitionWithDuration(t, s);//淡出淡入,原场景淡出,新场景淡入
CCTransitionFade::transitionWithDuration(t, s, ccRED);//第三个参数就是淡出淡入的颜色,默认是黑色
CCTransitionFlipX::transitionWithDuration(t, s, kOrientationLeftOver);//x轴左翻
CCTransitionFlipX::transitionWithDuration(t, s, kOrientationRightOver);//x轴右翻
CCTransitionFlipY::transitionWithDuration(t, s, kOrientationUpOver);//y轴上翻
CCTransitionFlipY::transitionWithDuration(t, s, kOrientationDownOver);//y轴下翻

CCTransitionFlipAngular::transitionWithDuration(t, s, kOrientationLeftOver);//带角度转的左翻
CCTransitionFlipAngular::transitionWithDuration(t, s, kOrientationRightOver);//带角度转的右翻
CCTransitionZoomFlipX::transitionWithDuration(t, s, kOrientationLeftOver);//带缩放效果x轴左翻
CCTransitionZoomFlipX::transitionWithDuration(t, s, kOrientationRightOver);//带缩放效果x轴右翻
CCTransitionZoomFlipY::transitionWithDuration(t, s, kOrientationUpOver);//带缩放效果y轴上翻
CCTransitionZoomFlipY::transitionWithDuration(t, s, kOrientationDownOver);//带缩放效果y轴下翻
CCTransitionZoomFlipAngular::transitionWithDuration(t, s, kOrientationLeftOver);//带缩放效果/有角度转的左翻
CCTransitionZoomFlipAngular::transitionWithDuration(t, s, kOrientationRightOver);//带缩放效果有角度转的右翻

CCTransitionShrinkGrow::transitionWithDuration(t, s);//交错换
CCTransitionRotoZoom::transitionWithDuration(t, s);//旋转效果
CCTransitionMoveInL::transitionWithDuration(t, s);//新场景从左移入覆盖
CCTransitionMoveInR::transitionWithDuration(t, s);//新场景从右移入覆盖
CCTransitionMoveInT::transitionWithDuration(t, s);//新场景从上移入覆盖
CCTransitionMoveInB::transitionWithDuration(t, s);//新场景从下移入覆盖

CCTransitionSlideInL::transitionWithDuration(t, s);//新场景从左移入推出原场景
CCTransitionSlideInR::transitionWithDuration(t, s);//新场景从右移入推出原场景
CCTransitionSlideInT::transitionWithDuration(t, s);//新场景从上移入推出原场景
CCTransitionSlideInB::transitionWithDuration(t, s);//新场景从下移入推出原场景
CCTransitionCrossFade::transitionWithDuration(t,s);//淡出淡入交叉,同时进行

CCTransitionPageTurn::transitionWithDuration(t, s, false);//翻页,前翻
CCTransitionPageTurn::transitionWithDuration(t, s, true);//翻页,后翻
CCTransitionFadeTR::transitionWithDuration(t, s);//向右上波浪
CCTransitionFadeBL::transitionWithDuration(t, s);//向左下波浪
CCTransitionFadeUp::transitionWithDuration(t, s);//向上百叶窗
CCTransitionFadeDown::transitionWithDuration(t, s);//向下百叶窗
CCTransitionTurnOffTiles::transitionWithDuration(t, s);//随机小方块
CCTransitionSplitRows::transitionWithDuration(t, s);//按行切
CCTransitionSplitCols::transitionWithDuration(t, s);//按列切


 

 

cocos2d-x 3.0 场景切换特效汇总 cocos2d-x 3.0中场景切换特效比较多,而且游戏开发中也经常需要用到这些特效,来使场景切换时不至于那么干巴,遂这里汇总一下,开发中使用。 场景切换用到导演类Directory,大多数用的都是替换场景,当然也可以用出栈进栈的方式来进行场景的替换,这里以replaceScene来举例。 场景切换特效的应用代码: auto scene=HelloWorld::createScene();/ 阅读详情

相关推荐

cocos2d-x游戏开发编程入门到实战视频教程

cocos2d-x游戏开发编程入门到实战视频教程 cocos2d-x刚开始的初衷就不是给企业用来开发大型游戏的,一个开源引擎后边又没有大牛支着,可以说它作为一个广大游戏爱好者用来研究娱乐的作用远大于其商业价值。 而14年开始大批的创业公司都想在移动游戏开发中“套一笔”,导致游戏产业膨胀,2D游戏开发成本低,周期短,再加上cocos2d当时口碑不错有着很多的成功先例,而且还开源,成为许多创业公司的首...

fengliaoai的博客 7312

Unity3D场景切换

首先新建两个场景:Scene_1与Scene_2 在第一个场景Scene_1中加入UI控件Button,Text设置为“点击切换场景”,名称为默认值“Button” 新建一个脚本,命名为ChangeScene,作为组件添加到Button按钮中: 在代码中加入点击事件: using UnityEngine; using System.Collections; usin

LazyChun的专栏 5万+

Cocos2d-x 场景切换效果:实现华丽的过渡效果

在 SceneA 的初始化方法中,我们创建了一个按钮,并为按钮绑定了一个点击事件处理函数 onButtonClicked。在点击事件处理函数中,我们创建了 SceneB,并使用 TransitionFade 过渡动画实现了从 SceneA 到 SceneB 的切换效果。在游戏开发中,场景切换是非常常见的操作。运行代码,你将看到一个包含按钮的场景 SceneA,点击按钮后会切换到 SceneB,并且伴随着淡入淡出的过渡效果。在 SceneB 的初始化方法中,我们创建了一个 Label,并将其添加到场景中。

WeCapture的博客 533

【Cocos2d-x】新手自学(二)酷炫的场景切换特效!

对于场景的理解:以前移植MTK游戏的时候,有一个词叫状态,比如主菜单叫 状态1,设置界面叫状态2,当主菜单选择设置的时候就切换至状态2 。现在,状态就是场景的意思啦! 在这里我引用一下小满的博客内容: “小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.youkuaiyun.com/bill_man 1.几个重要

一颗蓝米粒 7931

基于CatBoost回归模型的完整预测分析:从建模到SHAP可解释性分析

本文介绍了使用CatBoost回归模型进行完整预测分析的流程。首先导入必要的Python库并加载数据,进行数据预处理包括训练测试集划分和归一化处理。然后通过网格搜索优化CatBoost超参数,使用最优参数训练模型并评估预测性能。结果显示模型具有较高的决定系数(R²=0.9944)和较低的误差指标(RMSE=0.0696)。接着进行残差分析和正态性检验,发现残差基本服从正态分布。最后通过SHAP分析实现模型可解释性,识别关键特征影响。该方法为梯度提升树在回归问题中的应用提供了完整解决方案。

fx666_的博客 745

阿里云大模型ACP认证模拟考试(一)

摘要:在阿里云大模型高级工程师 ACP 认证暂无真题题库的现状下,模拟题具有重要意义。其依照真实考试设计,涵盖题型、题量与分值分布,助力考生熟悉考试框架,合理分配答题时间精力,提升效率。同时,模拟题紧扣官方课程,能帮助考生精准定位知识盲点,如大模型架构原理和通义千问应用实践等重点内容,以便针对性完善知识体系。此外,通过练习模拟题,考生可掌握不同题型的解题思维与技巧,快速洞察复杂题目本质,提高答题准确率。

davidkorhenn的博客 4737

Cocos2d-x--简单的场景切换及特效

Cocos2d-x--简单的场景切换及特效

zlQQhs(莫落)的专栏 3319

手把手教你解决Realsense D455在ROS下IMU数据不输出的问题(附固件降级指南)

本文详细解析了Realsense D455在ROS环境下IMU数据不输出的问题,提供了固件降级和ROS配置的完整解决方案。通过版本兼容性分析和实战操作指南,帮助开发者快速恢复IMU数据流,优化机器人开发体验。

weixin_42531494的博客 371

cocos2d-x Scene变换效果

[code="c++"] #ifndef _EFFECT_ #define _EFFECT_ #include "cocos2d.h" using namespace cocos2d; enum SceneTransitionEffect { NORMAL, GRID, //部落格 SW...

ai7090的专栏 157

告别I2C和SPI:用FPGA驱动DS18B20,一根线搞定温度采集(附Verilog代码)

本文详细介绍了如何利用FPGA通过单总线协议(One-Wire)驱动DS18B20温度传感器,仅用一根数据线实现高效温度采集。内容涵盖协议解析、Verilog代码实现及调试技巧,帮助开发者节省IO资源并提升系统性能。

weixin_42696271的博客 389

Jetson Orin NX上PyTorch环境搭建与性能优化指南

本文详细指导如何在Jetson Orin NX上搭建高效的PyTorch开发环境。内容涵盖CUDA与cuDNN的“隐藏”配置、Miniconda虚拟环境管理、PyTorch for Jetson的正确安装与验证,并提供了电源模式设置、TensorRT加速、混合精度等关键性能优化实战技巧,帮助开发者充分释放边缘AI设备的算力。

weixin_29090089的博客 337

cocos2d-x 场景切换

cocos2d-x 3.0 场景切换 场景切换动画 新手入门

继续激情,继续奋斗。 5712

Android AMS——AMS初始化(二)

Android AMS 也是一个系统服务,属于系统服务中的引导服务,在 startBootstrapServices() 方法中启动。这里我们就来看一下 ActivityManagerService 的启动流程。

小旭的专栏 774

cocos2d-x场景效果切换

Cocos2d-x提供了很多场景间切换的效果 1.使用方法: ccTime t = 1.2;    CCScene * pScene = CCScene::node();    CCLayer *pLayer = new book_page1();    pLayer->autorelease();    pScene->addChild(pLayer);    CCTransiti

bestpool的专栏 4550

windows server 2012安装升级MySQL

本篇文章主要介绍的是windows server 2012 R2操作系统安装升级以及过程中遇到的问题和对应的解决方法。(数据库低版本为:mysql-5.7.27-winx64;数据库数据库高版本为:mysql-5.7.44-winx64;提示:以下是本篇文章正文内容,下面案例可供参考。

qq_42776231的博客 780

EfficientNet 改进:添加混合卷积提取特征

混合卷积(Mixed Convolution)是一种在卷积神经网络(CNN)中结合多种卷积操作的策略,旨在通过融合不同卷积核大小或类型的卷积操作来提升模型的性能和灵活性。:例如标准卷积、深度可分离卷积(Depthwise Separable Convolution)、分组卷积(Grouped Convolution)等,可以在计算效率和特征提取能力之间取得平衡。混合卷积可以根据任务需求动态调整卷积操作的组合方式,适应不同的输入数据分布。:通过引入可学习的权重,动态调整不同卷积操作的贡献。

Henry的博客 659

Cocos2D-X 场景切换效果汇总

这些是Cocos2D-X 场景切换效果汇总,希望能对大家有所帮助

老板,猪脚要大扣滴的专栏 966

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

cocos2d-x初探学习笔记(6)--场景间切换效果

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.youkuaiyun.com/bill_man Cocos2d-x提供了很多场景间切换的效果,可以方便大家使用(很多是在Kjava时代都需要程序员自己来实现的效果)。 1.使用方法: 正常的无过渡场景的如果尚未建立场景(即游戏中的第一个场景),就是用pDirector->runWit

手机游戏开发学习笔记 2万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

cocos2d-x 菜鸟学习笔记四(游戏场景与场景切换)

首先是一些常识的介绍,这里有篇文章:http://article.ityran.com/archives/3283 简单的说来,一个游戏中包含的主要元素就是导演,场景,层,精灵,其实就是和拍戏一样,导演负责按“剧本”控制场景、层和精灵(演员),这“剧本”当然是我们自己设计的,比如:有什么角色演员,什么样的场景下演员可以或者应该做什么动作……而导演负责执行和控制这些元素将“剧本”以动态可视化的表现

cyistudio的专栏 8510

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Cocos2d-X】场景切换的小小研究

看场景切换的代码可以知道过程大概是这样:场景A切换场景B,则场景B在init之后,执行切换效果(如果有),再释放A。也就是说在切换的一段时间内,场景A和场景B是同时存在的。 写游戏的时候自己考虑场景A和B同时存在可能占用内存过多,就在有些地方加入了过渡场景,比如游戏关卡的重新开始。但是在“游戏关卡—过渡场景—游戏关卡”的切换时候出现了问题。我设定的是过渡场景init中定时器一定时间后自动切换场景,但是发现最后一直停在过渡场景,无法跳到游戏关卡去。 现在就可以试着解释一下停留在过渡场

C++游戏开发 7321

cocos2d-x 切换场景动画

//扇形 逆时针 // CCTransitionScene* transition = CCTransitionProgressRadialCCW::create(1.5f, MyScene::createMyScene()); // CCDirector::sharedDirector()->replaceScene(transition); //扇形 顺时针 /

song_hui_xiang 2554

Cocos2d场景切换效果汇总

装载至http://blog.sina.com.cn/s/blog_76086559010129pw.html 在iPhone游戏开发中,游戏之间的场景开发中有很多动画可以实现,具体实现的动画如下: (PS:场景过渡效果比较多,在后边附上动画效果,童鞋们没必要记住,从字面上就能理解其功能,写代码的时候只需键入CCTransition...就可以从提供的代码里选择了,这也是Xcode

Colin-Liao's column 1285

Cocos2d-x场景切换

1、普通切换场景 Director::getInstance()->replaceScene(SecondScene::createScene()); 2、包含特效的场景切换 Director::getInstance()->replaceScene(TransitionRotoZoom::create(3.0f, SecondScene::createScene())); 特效的场景:

u012500046的专栏 2324

六 手游开发神器 cocos2d-x editor 之场景切换

接着上一节,我们已经创建了一个主游戏场景MainLayer,现在我们需要创建一个开始场景StartLayer,包括StartLayer.ccbx和StartLayer.js两个文件,点击StartLayer上的开始按钮,游戏切换到主游戏场景。 先看运行效果; 代码下载地址:http://www.kuaipan.cn/file/id_2534893

TouchSnow的专栏 7658

cocos2d-x scene场景的切换

上篇中我们添加两个新类,但是类并没有做任何事情事情,这篇文章主要介绍如何切换游戏的画面,比如从开始切换到游戏界面。 还是命令行新建工程 cocos new SimpleDemo  -p com.MyCompany.SimpleDemo -l cpp -d ./MyCompany cocos compile -s ./MyCompany/SimpleDemo -p linux -m debug

wangrl的博客 2709
上一篇: 【Cocos2D-X游戏开发笔记1】播放音乐&CocosDenshion
下一篇: Android ADT升级到22后的bug:Could not find class 'org.apache.commons.httpclient.methods.PostMethod'
程序员长弓
博客等级 码龄20年 650粉丝 183原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值