【Cocos2d-x】Cocos2d-x参考案例源码解析之二:TestCpp万变不离其宗Main入口点
2013-10-11 21:03
531 查看
// 这里讲解的是Cocos2d - X 2.20 版本的TestCpp案列
CSDN博客:http://blog.csdn.net/leoncoder
在VS的解决方案里展开TestCpp工程,其下有49个示例目录,除此之前还有几个文件:
AppDelegate.h/cpp : 程序控制类AppDelegate 。
controller.h/cpp:示例场景管理类TestController,用于显示所有示例的菜单。
testBasic.h/cpp:示例场景基类TestScene,用于返回到主界面场景。
testResource.h:文件资源名称字符串定义头文件
tests.h:示例总头文件
main.h/cpp:主函数及头文件
VisibleRect.h/cpp:自适应屏幕分辨率
/*
在游戏中使用相对位置设置坐标的好处是显而易见的,这样就不需要为每个分辨率都定义一套坐标了。
首先得定义一些参考点,引擎的TestCpp例子中就提供了一种方法,
以屏幕上可视区域的9个点作为参考点,相当于在该矩形内写一个米字,
这9个点分别是:左上、左、左下、下、右下、右、右上、上、中心。
*/
// -- Main.cpp
其中AppDelegate是最主要的类,代理运行着整个应用程序,它的体系如下:
![](https://img-blog.csdn.net/20131011212302015?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVvbmNvZGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
简化流程如下所示:
![](https://img-blog.csdn.net/20131011212319000?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVvbmNvZGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
而CCEGLView是整个程序窗口类,游戏的显示、表现等等都在这上面进行,跟AppDelegate合起来的流程如下:
![](https://img-blog.csdn.net/20131011212949468?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVvbmNvZGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
在CCApplication::run()中调用了applicationDidFinishLaunching()函数,代码如下:
applicationDidFinishLaunching函数就是处理导演类和场景开始及资源的适配:
这里程序被挂起
刚接触Cocos2d-x,如有错误请大家纠正,共同学习进步
编程QQ群:160296200
本篇博客出Leon,转载请注明出处:http://blog.csdn.net/leoncoder/article/details/12623559
CSDN博客:http://blog.csdn.net/leoncoder
在VS的解决方案里展开TestCpp工程,其下有49个示例目录,除此之前还有几个文件:
AppDelegate.h/cpp : 程序控制类AppDelegate 。
controller.h/cpp:示例场景管理类TestController,用于显示所有示例的菜单。
testBasic.h/cpp:示例场景基类TestScene,用于返回到主界面场景。
testResource.h:文件资源名称字符串定义头文件
tests.h:示例总头文件
main.h/cpp:主函数及头文件
VisibleRect.h/cpp:自适应屏幕分辨率
/*
在游戏中使用相对位置设置坐标的好处是显而易见的,这样就不需要为每个分辨率都定义一套坐标了。
首先得定义一些参考点,引擎的TestCpp例子中就提供了一种方法,
以屏幕上可视区域的9个点作为参考点,相当于在该矩形内写一个米字,
这9个点分别是:左上、左、左下、下、右下、右、右上、上、中心。
*/
// -- Main.cpp
#include "main.h" #include "AppDelegate.h" #include "CCEGLView.h" USING_NS_CC; int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // create the application instance // 实例化一个Cocos2d-x程序对象 AppDelegate app; // 获得EGLView单例 创建OpenGL视窗并设置窗口大小 CCEGLView* eglView = CCEGLView::sharedOpenGLView(); // 设置页面名称 eglView->setViewName("TestCpp"); // 设置屏幕画面大小 eglView->setFrameSize(960, 640); // 调用应用程序平台实现类 运行程序对象 return CCApplication::sharedApplication()->run(); }
其中AppDelegate是最主要的类,代理运行着整个应用程序,它的体系如下:
简化流程如下所示:
而CCEGLView是整个程序窗口类,游戏的显示、表现等等都在这上面进行,跟AppDelegate合起来的流程如下:
在CCApplication::run()中调用了applicationDidFinishLaunching()函数,代码如下:
applicationDidFinishLaunching函数就是处理导演类和场景开始及资源的适配:
这里程序被挂起
bool AppDelegate::applicationDidFinishLaunching() { // As an example, load config file // XXX: This should be loaded before the Director is initialized, // XXX: but at this point, the director is already initialized // D:\cocos2d-x-2.2.0\samples\Cpp\TestCpp\Resources\configs CCConfiguration::sharedConfiguration()->loadConfigFile("configs/config-example.plist"); // initialize director CCDirector *pDirector = CCDirector::sharedDirector(); pDirector->setOpenGLView(CCEGLView::sharedOpenGLView()); // 获取屏幕画面大小 CCSize screenSize = CCEGLView::sharedOpenGLView()->getFrameSize(); // 设计屏幕大小 CCSize designSize = CCSizeMake(480, 320); // 文件路径相关类 CCFileUtils* pFileUtils = CCFileUtils::sharedFileUtils(); std::vector<std::string> searchPaths; // 屏幕大小 > 设计的场景大小 if (screenSize.height > 320) { // 设置资源大小 CCSize resourceSize = CCSizeMake(960, 640); searchPaths.push_back("hd"); searchPaths.push_back("hd/scenetest"); // 其实 setContentScaleFactor 方法是为了适配不同资源而设计的,可以用此方法对不同资源适配,缩放等 pDirector->setContentScaleFactor(resourceSize.height/designSize.height); } else { searchPaths.push_back("scenetest"); } // pFileUtils->setSearchPaths(searchPaths); #if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) CCEGLView::sharedOpenGLView()->setDesignResolutionSize(designSize.width, designSize.height, kResolutionShowAll); #else /* cocos2d-x 2.0提供了自适应屏幕分辨率的接口:setDesignResolutionSize.这个接口设置的是你的资源文件设计时对应的屏幕分辨率,如果你的资源文件是针对320*480屏幕设计的, 就使用 setDesignResolutionSize(320, 480); cocos2d-x会根据屏幕的实际分辨率和通过此接口设置的分辨率对整个世界进行拉伸. cocos2d-x的拉伸机制是: m_fScreenScaleFactor = MIN((float)m_sSizeInPixel.width / m_sSizeInPoint.width,(float)m_sSizeInPixel.height / m_sSizeInPoint.height); */ CCEGLView::sharedOpenGLView()->setDesignResolutionSize(designSize.width, designSize.height, kResolutionNoBorder); #endif // 创建场景 CCScene * pScene = CCScene::create(); // 创建图层 CCLayer * pLayer = new TestController(); // 自动释放池 pLayer->autorelease(); // 图层加入到场景中 pScene->addChild(pLayer); // 运行场景 pDirector->runWithScene(pScene); return true; }
刚接触Cocos2d-x,如有错误请大家纠正,共同学习进步
编程QQ群:160296200
本篇博客出Leon,转载请注明出处:http://blog.csdn.net/leoncoder/article/details/12623559
相关文章推荐
- TCP/IP协议栈的基本工作原理
- 最简单的linux tcp网络编程
- 网络图片的获取和显示的方法
- 网络子系统50_ip协议选项填充
- C#编程网络大讲堂.郑千忠等(奋斗的小鸟)_PDF 电子书
- http://www.cnblogs.com/
- HttpClient小结
- 网络知识汇总(2) - Linux下如何修改ip地址
- Intellij idea 快捷键大全(网络收集整理)
- 设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码 详细出处参考:http://www.jb51.net/article/35063.htm
- 网络编程 socket 之 bind 函数
- mysql 基本使用教程(源于网络)
- TCP
- 网络安全热门资料 精品工具
- 几种网络负载均衡方法比较
- 葡萄引擎项目 -> 非常简单的Golang服 + C#客户端. TCP协议.
- Socket选项:SO_KEEPALIVE
- SPRING MVC3.2案例讲解--使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- 基于SNMP协议发现网络中路由器、交换机和打印机的简单方法
- ngx_http_module 模块的配置图