Cocos2d-x学习笔记(三) 实现简单的场景切换

  从这一篇开始差不多算正式进入代码编写阶段了,虽然都是一些简单的小功能,不过再复杂的游戏也都是由这些小功能组成的。这篇将学习简单的场景切换。

  说到场景切换那肯定是需要有多个场景才能实现切换,而我们的项目里貌似只有HelloWorldScene这一个场景,那么就需要我们再创建一个场景。只是怎么创建场景呢?相信很多同学都会想到既然HelloWorldScene是一个场景,那么再写一个HelloWorldScene出来不就是了?答案也确实如此,只不过我当时脑子没转过来,纠结了好半天也没想到怎么创建,后来就用了最笨的方法把HelloWorldScene.cpp和HelloWorldScene.h复制一下换个名字,居然还就蒙对了,果然有时候不能想太多…

  我创建的新场景是MyScene,将.cpp和.h里面所有写着HelloWorldScene全部改成MyScene就OK了。(这里最好在MyScene场景中做一些区别,不然与HelloWorldScene界面一模一样了)

  现在有了两个场景了,就可以实现场景切换了。在什么情况下切换呢?其他的事件我们现在都没接触过,那就用前一篇笔记中提到的图片按钮回调函数来实现吧。

  首先创建一个图片按钮(这个代码就不写了之前学到过,你也可以直接用默认的那个关闭按钮),我将它命名为pReplaceItem,然后写一个带有切换场景功能的回调函数(偷懒的同学可以把原本的关闭函数注释,直接在里面写切换场景的实现代码)

void HelloWorld::menuReplaceScene(CCObject* pSender)
{	
	// 清空缓存
	CCDirector::sharedDirector()->purgeCachedData();

	CCScene *pScene = MyScene::scene();

	CCDirector::sharedDirector()->replaceScene(CCTransitionJumpZoom::create(1,pScene));
}

  OK,代码就这么简单。不过还是需要解释下,第一句代码是先将缓存清空,也就是先现在的场景清掉。接着创建一个新的场景,也就是我们之前写好的MyScene场景,看到这句代码大家应该就理解了之前的CCScene* HelloWorld::scene()函数是什么意思了吧,没错就是返回HelloWorld类的场景。(顺便提一下,看了.h文件会知道不管是HelloWorld类还是MyScene类他们都继承自CCLayer类也就是说他们是个布景层,什么是布景层呢?这个以后会了解到现在就不提了。)

 最后就是将新建的场景替换掉旧场景的方法了:CCDirector::sharedDirector()->replaceScene(CCScene *pScene)

  这里有个CCTransitionJumpZoom,他又是什么呢?是切换场景的方式,我所用的这个切换效果是跳跃式,原场景先缩小,然后新场景跳跃进来。场景切换效果有很多很多种,我这里就不一一写出来了,有兴趣的同学可以去查查API,我上次推荐的那本《Cocos2d-x权威指南》里面也有详细的说明。

  毕竟只是个简单的场景切换效果,需要写的代码就这么多了,那么运行看看结果吧。(在这里我遇到了一个小问题,代码运行的时候编译器总说找不到MyScene.cpp,我上网查了,网上的解决方法各异但是都看起来很复杂,所以我决定自己先试试,最后才发现原来MyScene的两个文件被默认存在了win32的文件夹中,而我们的HelloWorldScene是放在Classes文件中,所以大家创建文件的时候注意一下路径)

图片中的play就是我刚才创建的图片按钮啦,现在我来点击看看是否成功切换场景

效果实现啦,这种跳跃的截图需要技术,大家知道意思就OK了- -

很简单是不是?

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值