189 8069 5689

【Cocos2dx开发】场景-创新互联

【Cocos2dx开发】场景

写在前面——有不对的地方,烦请大家批评指正,我也会继续努力提高自己。如果转载请注明出处,谢谢大家支持——Forward。

成都创新互联专注于海淀网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供海淀营销型网站建设,海淀网站制作、海淀网页设计、海淀网站官网定制、小程序开发服务,打造海淀网络公司原创品牌,更为您提供海淀网站排名全网营销落地服务。

我的微博——秦京一梦

从这一篇,我们开始对Cocos2dx做一个基础系列的学习。

使用Cocos2dx进行游戏开发,Forward个人感觉就如同画画一样。一幅画要展现出来,就必须有至少一个载体,同样的,游戏中一个场景就是我们的一个载体。那么所谓的场景又是什么呢?带着这个问题,我们开始进入今天的主题——场景CCScene。

在之前的博客中Forward有提到过,按照自己的学习方法,在深入学习某一的新的知识点之前,总是要对整体上先做一个认识,这样对后期的学习会有很大的帮助。好的,为了有这样一个整体的认识,我们先来看看自上而下有关场景类CCScene的一个类结构。

【Cocos2dx开发】场景

图 1

上图1中,我们可以看出,CCScene是继承自CCLayer,而CCLayer则是由CCObject继承而来。同时由于CCLayer本身继承自CCTouchDelegate类,使其能够处理Touch事件。这样,就保证了CCScene能够在做游戏基本载体的基础上完成游戏过程中交互所必需的Touch事件的捕获与处理了。

那么Cocos2dx游戏开发中是如何使用CCScene的呢?

首先我们创建一个Cocos2dx工程,配置路径使之可以运行(Forward这里创建了一个SceneLayer工程),我们从程序的入口main文件看起。

  AppDelegate app;

  CCEGLView* eglView =CCEGLView::sharedOpenGLView();

  eglView->setFrameSize(480,320);

  intret = CCApplication::sharedApplication()->run();

这里我们注意到,程序一启动就定义了一个AppDelegate对象。然后调用AppDelegate的run来运行。

在AppDelegate的run函数中做了什么呢?

  if(!applicationDidFinishLaunching())

  {

    return0;

  }

可能初学者会感觉比较绕,但是仔细看就会明白。SceneLayer工程中自定义了一个HelloWorld类,它是由CCLayer继承而来。并通过类内部的一个内部的静态变量CCScene作为游戏的主要载体来加载包括HelloWorld本身这个层以及其他游戏中的元素的。

我们进入AppDelegate.cpp中,就会发现,原来主场景的创建就在applicationDidFinishLaunching中。

  CCScene *pScene =HelloWorld::scene();

  // run

  pDirector->runWithScene(pScene);

这样就将一个场景CCScene载体创建出来了。(由于个人表达能力有限,或许在描述的过程中不够详细,希望大家能够去读源代码,可能会感觉更加清晰易懂)。

明白了这一点。我们也依样画葫芦,创建一个自己的场景TranslateScene出来。(为求简便,Forward只是对HelloWorld类进行复制简单修改并加入工程)。

创建这个场景用来做什么呢?其实这个例子的想法很简单,就是通过点击从一个场景切换到另外一个场景上去。这个过程中,Forward会选择使用Cocos2dx中现有的一些场景切换特效来完成,希望通过这一个例子对场景的切换一些特效做一些简单学习。

在这个例子中,我们主要使用的到的类如下(见图2)。

【Cocos2dx开发】场景

图 2

  这里我们看到的CCTransition及文件内部的一些类,主要是与场景切换特效相关的一些使用类。如CCTransitionRotoZoom、CCTransitionJumpZoom等等。具体的API可以参考源代码,Forward在这里就不做赘述了。

进入HelloWord的关闭按钮回调函数,我们做如下修改。

  CCScene*pTScene = TranslateScene::scene();

  CCTransitionRotoZoom*pTranslateScene = CCTransitionRotoZoom::create(3.0f,pTScene);

  CCDirector::sharedDirector()->replaceScene(pTranslateScene);

  这里我们首先创建了一个前面自定义的一个类TranslateScene对象,然后通过CCTransitionRotoZoom类来完成场景的跳转(当然,我们需要包含对应头文件)。

  看看执行结果来一个感性认识吧。直接运行程序——

【Cocos2dx开发】场景

图 3

  点击右下角按钮,进行场景切换——

【Cocos2dx开发】场景

图 4

  我们看到场景上的图片边旋转变缩小,知道看不见,然后TranlateScene场景显示的信息边旋转边放大直到刚好填充View窗口——

【Cocos2dx开发】场景

图 5

  好的,今晚的基础学习就先到这吧。是不是很简单啊。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻标题:【Cocos2dx开发】场景-创新互联
网站链接:http://cdxtjz.cn/article/dscedo.html

其他资讯