• cocos2d-x游戏开发系列教程-超级玛丽04-AppDelegate


    代码下载链接

    http://download.csdn.net/detail/yincheng01/6864893

    解压密码:c.itcast.cn


    背景

    上一篇博文提到在CCApplication::run()函数中,调用虚函数applicationDidFinishLaunching,将初始化的控制权留给开发者。

    如何实现,为什么要这么实现呢?


    如何实现:虚函数重载

    实现的方法就是开发者从CCApplication继承一个类,这个类在创建工程模板生成的工程里叫做AppDelegate

    这个AppDelegate重载了applicationDidFinishLaunching,这样当调用CCApplication::run时,在run函数里调用的applicationDidFinishLaunching

    是重载后的函数,也就是AppDelegate中重载的函数。


    为什么要这么实现

    这么实现是很优雅的,当然你可以通过函数指针去实现它,用C语言的方式,但是那种做法很原始。C++不建议动不动句函数指针的,破坏面向对象的结构。


    为什么要提到applicationDidFinishLaunching

    因为这个函数是真正的程序入口,而且这部分代码开始就是可移植部分了,上篇博文提到的main函数,是win32的main函数,各种平台语言的main函数

    不尽相同,所以从代码结构看,main函数在win32平台目录,而AppDelegate在Classes目录下。


    既然applicationDidFinishLaunching是真正的入口,那么这个函数负责着一些游戏逻辑代码,我们来看看这些代码的实现:

    bool AppDelegate::applicationDidFinishLaunching() {
    	// 获得导演对象,因为导演对象是单例,所以直接通过shareDirector获得
    	CCDirector* pDirector = CCDirector::sharedDirector();
    	// View对象,也是单例,直接获取
    	CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();
    
    	// 设置舞台
    	pDirector->setOpenGLView(pEGLView);
    
    	// 设置舞台的设计尺寸,整个程序都使用480*320规格的资源以及算法,但是当setFrameSize(960,640)时,cocos2dx自动会拉伸所有资源和算法
    	// 完成适配
    	pEGLView->setDesignResolutionSize(480, 320, kResolutionNoBorder);
    
    	//pEGLView->setDesignResolutionSize(480, 320, kResolutionShowAll);
    
    	// turn on display FPS
    	pDirector->setDisplayStats(true);
    
    	// set FPS. the default value is 1.0/60 if you don't call this
    	pDirector->setAnimationInterval(1.0 / 60);
    
    	// 创建菜单场景
    	CCScene *pScene = CMMenuScene::CreateMenuScene();
    
    	// 导演指挥运行场景
    	pDirector->runWithScene(pScene);
    
    	return true;
    }

    在这个函数运行完成之后,CMMenuScene场景就运行在窗口上了


  • 相关阅读:
    VMWare磁盘配置的问题终于解决了!!
    十种老板不可追随
    关于ASP无组件上传在2003下出错
    设计模式的有趣解释-追MM[转]
    "未能在给定的程序集中找到任何适合于指定的区域性(或非特定区域性)的资源"解决办法
    今天看到了DNN3.0.4,感觉挺不错的,确实有很大的改进!!!
    今天加入了博客园
    一个女孩写的经典程序!!! (转载)
    加了强名后经常出现错误“程序集清单定义与程序集引用不匹配”
    C#写一个URL编码转换GB23121的方法,然后可以取到天气预报
  • 原文地址:https://www.cnblogs.com/new0801/p/6177223.html
Copyright © 2020-2023  润新知