cocos2d-x 菜鸟实习生学习篇(六) 场景切换

每天上班都喜欢先抽些时间到微博、博客里扯扯淡。附上我的微博号:star特530

周二老板开会的时候问我-x学的怎样了,听我答完后,突然说:这样吧,下周你把公司刚发布的这款网游移植到安卓上,如何? 听完我顿时震惊了!老板这是对我不满意想趁机吵了我吗?我只是个菜鸟实习生啊,接触-x也就一个多星期,怎么能完成如此艰巨的任务!

事情当然不是我想的那样,不过下周也决不会轻松,所以这周自学-x 也格外努力。

好了,扯到这里。今天讲下场景切换吧,也是就replacescene,我也只能说个大概,新手嘛,也就自我陶醉啦。

这里还是调用蓝米粒的博客:http://blog.csdn.net/xiaoxiangp/article/details/7684726


按照我的理解就是:写一个游戏就像是导演一出戏,首先我需要一个导演~


然后我需要主菜单场景设置场景关于场景游戏进行场景,也就是多个场景


游戏中这个场景呢,不知道大家玩过《冒险岛》这个游戏没有,这个游戏就有很多层,背景层啦。障碍物层啦,任务怪物层啦,等等。分层的概念一出来,思路都清晰了许多所以每个场景能有多个层


然后每个层中都有很多的《个体》这是抽象的说法,具体一点比如怪物层。每个怪物都是一个单独的个体,我们还能叫他<精灵>游戏中不可能只有一个怪物吧~所以每个层都能有多个个体。


然后每个个体都有自己的特性吧~比如会跳舞,攻击之类的、我们叫这一现象为动作~每个个体都能有很多很多的动作呢....


现在,我们继续说场景的切换,cocos2d中支持很多种特效的状态切换。先上代码。咱们慢慢分析!

一下是Helloworld的一个场景的创建函数


  1. CCScene*HelloWorld::scene()
  2. {
  3. CCScene*scene=NULL;
  4. do
  5. {
  6. //'scene'isanautoreleaseobject
  7. scene=CCScene::node();这里是创建一个场景
  8. CC_BREAK_IF(!scene);
  9. //'layer'isanautoreleaseobject
  10. HelloWorld*layer=HelloWorld::node();这里是创建了一个层
  11. CC_BREAK_IF(!layer);
  12. //addlayerasachildtoscene
  13. scene->addChild(layer);然后添加层到场景中,显示场景中的这个层~,当然可以是多个层哦~
  14. }while(0);
  15. //returnthescene
  16. returnscene;
  17. }
上面代码就是创建了Helloworld这个场景,然后创建了一个层。再把这个层添加到场景中去


还记得我在init()函数中添加按钮的代码么...当我们添加了一按钮后,我们就可以修改它相对于的响应函数:


  1. CCMenuItemImage*pCloseItem2=CCMenuItemImage::itemFromNormalImage(
  2. "play1.png",
  3. "play2.png",
  4. this,
  5. menu_selector(HelloWorld::menuTestCallback));这个HelloWorld::menuTestCallback是个函数的名字这个函数需要我们自己写一个。
  6. CC_BREAK_IF(!pCloseItem2);
  7. pCloseItem2->setPosition(ccp(s.width/2,s.height-100));设置按钮位置
  8. CCMenu*pMenu=CCMenu::menuWithItems(pCloseItem2,NULL);设置菜单项
  9. pMenu->setPosition(CCPointZero);
  10. CC_BREAK_IF(!pMenu);
  11. this->addChild(pMenu,1);添加菜单...后面的那个1表示的是层次。最小的层在表面


上面是init()中的代码。主要就是创建了一个按钮,然后放入菜单中。然后添加菜单进入场景中...下面是关键的切换特效实现代码...


  1. voidHelloWorld::menuTestCallback(CCObject*pSender)
  2. {
  3. CCScene*scene=HelloWorld::scene();注意这里的Scene(),这个是切换至什么场景,我这里写的就是本身这个场景,所以切来切去就是自己一个场景..哈哈,不过咱们看的是切换的过度特效嘛..
  4. CCDirector::sharedDirector()->replaceScene(CCTransitionJumpZoom::transitionWithDuration(1.2f,scene));
  5. }


正常的没有过度的场景切换,就是用CCDirector::sharedDirector()->replaceScene(scene);大家主要注意这个CCTransitionJumpZoom::,这个就是切换效果了!替换这个就能实现各种效果!具体有哪些效果呢,这里转载了小满的博客:transitionWithDuration(t, s)这两个参数,第一个是时间,格式为 1.2f类似的浮点数。第二个是需要切换至的场景,上面有介绍啦

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man

CCTransitionJumpZoom::transitionWithDuration(t, s);//跳跃式,本场景先会缩小,然后跳跃进来

CCTransitionFade::transitionWithDuration(t, s);//淡出淡入,原场景淡出,新场景淡入

CCTransitionFade::transitionWithDuration(t, s, ccWHITE);//如果上一个的函数,带3个参数,则第三个参数就是淡出淡入的颜色

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);//场景从下移入推出原场景以下三个需要检测opengl版本是否支持

CCConfiguration::sharedConfiguration()->getGlesVersion() <= GLES_VER_1_0如果为真则为不支持

CCTransitionCrossFade::transitionWithDuration(t,s);//淡出淡入交叉,同时进行

CCTransitionRadialCCW::transitionWithDuration(t,s);//顺时针切入

CCTransitionRadialCW::transitionWithDuration(t,s);//逆时针切入以下两个需要先设置摄像机,使用

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

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);//按列切

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我来回答你关于 cocos2d-x 中 scrollView 的问题。 scrollView 是 cocos2d-x 中常用的 UI 控件之一,可以用来显示大量的内容,并支持滑动、缩放等功能。在 scrollView 中,可以添加多个子控件,比如 label、sprite 等,也可以添加自定义的控件。 在使用 scrollView 时,需要先创建一个 ScrollView 对象,然后设置它的属性,比如大小、位置、滑动方向等。接着,再往 scrollView 中添加子控件,最后将 scrollView 添加到场景中即可。 下面是一个简单的示例代码,演示如何创建一个垂直方向的 scrollView: ``` // 创建 scrollView 对象 auto scrollView = ScrollView::create(); scrollView->setContentSize(Size(200, 300)); scrollView->setDirection(ScrollView::Direction::VERTICAL); scrollView->setInnerContainerSize(Size(200, 800)); scrollView->setPosition(Vec2(100, 100)); // 往 scrollView 中添加子控件 for (int i = 0; i < 10; i++) { auto label = Label::createWithSystemFont("Label " + std::to_string(i), "Arial", 24); label->setPosition(Vec2(100, 700 - i * 70)); scrollView->addChild(label); } // 将 scrollView 添加到场景中 this->addChild(scrollView); ``` 在上面的代码中,我们首先创建了一个 scrollView 对象,设置了它的大小、位置和滑动方向等属性。然后,使用循环往 scrollView 中添加了 10 个 label,最后将 scrollView 添加到场景中。 通过以上代码,你可以学会如何使用 cocos2d-x 中的 scrollView 控件。希望对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值