十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
写在前面——有不对的地方,烦请大家批评指正,我也会继续努力提高自己。如果转载请注明出处,谢谢大家支持——Forward。
成都创新互联专注于海淀网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供海淀营销型网站建设,海淀网站制作、海淀网页设计、海淀网站官网定制、小程序开发服务,打造海淀网络公司原创品牌,更为您提供海淀网站排名全网营销落地服务。我的微博——秦京一梦
从这一篇,我们开始对Cocos2dx做一个基础系列的学习。
使用Cocos2dx进行游戏开发,Forward个人感觉就如同画画一样。一幅画要展现出来,就必须有至少一个载体,同样的,游戏中一个场景就是我们的一个载体。那么所谓的场景又是什么呢?带着这个问题,我们开始进入今天的主题——场景CCScene。
在之前的博客中Forward有提到过,按照自己的学习方法,在深入学习某一的新的知识点之前,总是要对整体上先做一个认识,这样对后期的学习会有很大的帮助。好的,为了有这样一个整体的认识,我们先来看看自上而下有关场景类CCScene的一个类结构。
图 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)。
图 2
这里我们看到的CCTransition及文件内部的一些类,主要是与场景切换特效相关的一些使用类。如CCTransitionRotoZoom、CCTransitionJumpZoom等等。具体的API可以参考源代码,Forward在这里就不做赘述了。
进入HelloWord的关闭按钮回调函数,我们做如下修改。
CCScene*pTScene = TranslateScene::scene();
CCTransitionRotoZoom*pTranslateScene = CCTransitionRotoZoom::create(3.0f,pTScene);
CCDirector::sharedDirector()->replaceScene(pTranslateScene);
这里我们首先创建了一个前面自定义的一个类TranslateScene对象,然后通过CCTransitionRotoZoom类来完成场景的跳转(当然,我们需要包含对应头文件)。
看看执行结果来一个感性认识吧。直接运行程序——
图 3
点击右下角按钮,进行场景切换——
图 4
我们看到场景上的图片边旋转变缩小,知道看不见,然后TranlateScene场景显示的信息边旋转边放大直到刚好填充View窗口——
图 5
好的,今晚的基础学习就先到这吧。是不是很简单啊。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。