1 游戏逻辑架构,Cocos2d-x游戏项目创建,HelloWorld项目创建,HelloWorld程序分析,(CCApplicationProtocol,CCApplication,AppDeleg
1
游戏逻辑架构
具体介绍
|
A |
|
B sceneàaddChild(layer); layeràaddChild(sprite); |
2
项目创建命令:
|
A E:\Installed\cocos2d-x-2.2.3\tools\project-creator> |
|
B python create_project.py -project MyCocos2dx -package com.toto.mycocos01 -language cpp |
|
C -project MyCocos2dx工程名 -package com.toto.mycocos01 -language cpp |
|
D |
3
简单介绍
|
1 创建了一个cocos2dx项目之后,打开项目之后,会有例如以下项目结构 展开libcocos2d,找到cocos2d.cpp,双击打开此cpp文件,内容例如以下: #include NS_CC_BEGIN const { return } NS_CC_END 截图例如以下: 分析: A B |
|
2 |
|
程序入口是:main.cpp |
|
#include #include #include USING_NS_CC; int HINSTANCE LPTSTR int { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // create the application instance AppDelegate CCEGLView* eglView->setViewName("MyCocos2dx"); eglView->setFrameSize(480, return } |
|
进入run函数, |
|
int { PVRFrameEnableControlWindow(false); // Main message loop: MSG LARGE_INTEGER LARGE_INTEGER LARGE_INTEGER QueryPerformanceFrequency(&nFreq); QueryPerformanceCounter(&nLast); // Initialize instance and cocos2d. if (!applicationDidFinishLaunching()) { return 0; } CCEGLView* pMainWnd->centerWindow(); ShowWindow(pMainWnd->getHWnd(), while (1) { if (! { // Get current time tick. QueryPerformanceCounter(&nNow); // If it's the time to draw next frame, draw it, else sleep a while. if (nNow.QuadPart { nLast.QuadPart CCDirector::sharedDirector()->mainLoop(); } else { Sleep(0); } continue; } if (WM_QUIT { // Quit message loop. break; } // Deal with windows message. if (! { TranslateMessage(&msg); DispatchMessage(&msg); } } return (int) } |
|
程序的入口:applicationDidFinishLaunching() |
|
AppDelegate.cpp bool // initialize director CCDirector* CCEGLView* pDirector->setOpenGLView(pEGLView); // 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 // create a scene. it's an autorelease object CCScene *pScene // run pDirector->runWithScene(pScene); return } 截图: |
|
HelloWorldScene.h |
|
#ifndef #define #include class { public: // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone virtual // there's no 'id' in cpp, so we recommend returning the class instance pointer static // a selector callback void // implement the "static node()" method manually CREATE_FUNC(HelloWorld); }; #endif |
|
HelloWorldScene.cpp |
|
#include USING_NS_CC; CCScene* { // 'scene' is an autorelease object CCScene *scene // 'layer' is an autorelease object HelloWorld *layer // add layer as a child to scene scene->addChild(layer); //return the scene return } // on "init" you need to initialize your instance bool { ////////////////////////////// // 1. super init first if ( !CCLayer::init() { return } CCSize CCPoint ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // // add a "close" icon to exit the progress. it's an autorelease object CCMenuItemImage *pCloseItem "CloseNormal.png", "CloseSelected.png", this, menu_selector(HelloWorld::menuCloseCallback)); pCloseItem->setPosition(ccp(origin.x origin.y // create menu, it's an autorelease object CCMenu* pMenu->setPosition(CCPointZero); this->addChild(pMenu, ///////////////////////////// // 3. add your codes below... // add a label shows "Hello World" // create and initialize a label CCLabelTTF* // position the label on the center of the screen pLabel->setPosition(ccp(origin.x origin.y // add the label as a child to this layer this->addChild(pLabel, // add "HelloWorld" splash screen" CCSprite* // position the sprite on the center of the screen pSprite->setPosition(ccp(visibleSize.width/2 // add the sprite as a child to this layer this->addChild(pSprite, return } void { #if (CC_TARGET_PLATFORM CCMessageBox("You #else CCDirector::sharedDirector()->end(); #if (CC_TARGET_PLATFORM exit(0); #endif #endif } |
|
总结: 1、对于cocos真正的初始化是在init()方法中 2、CCScene中的 3、CCPointZero |
4
(CCApplicationProtocol,CCApplication,AppDelegate)三个类的类关系介绍:
抽出代码详细实现:
长处:屏蔽了平台的差异性,实现跨平台
|
1 #ifndef #define NS_CC_BEGIN enum { kTargetWindows, kTargetLinux, kTargetMacOS, kTargetAndroid, kTargetIphone, kTargetIpad, kTargetBlackBerry, kTargetNaCl, kTargetEmscripten, kTargetTizen, kTargetWinRT, kTargetWP8 }; /** * @addtogroup platform * @{ * @js NA * @lua NA */ class { public: virtual ~CCApplicationProtocol() /** @brief Implement CCDirector and CCScene init code here. @return true Initialize success, app continue. @return false Initialize failed, app terminate. */ virtual /** @brief The function be called when the application enter background @param the pointer of the application */ virtual /** @brief The function be called when the application enter foreground @param the pointer of the application */ virtual /** @brief Callback by CCDirector for limit FPS. @interval The time, expressed in seconds, between current frame and next. */ virtual /** @brief Get current language config @return Current language config */ virtual /** @brief Get target platform */ virtual }; // end of platform group /// @} NS_CC_END #endif |
|
2 |
|
3 |
1 游戏逻辑架构,Cocos2d-x游戏项目创建,HelloWorld项目创建,HelloWorld程序分析,(CCApplicationProtocol,CCApplication,AppDeleg的更多相关文章
- Django 创建web项目之HelloWorld
Django.Flask.Tornado并称为python WEB三大框架.Diango是一个开源的web应用框架,具有开发速度快的特点.同时因为过度封装,具有性能低的特点. 创建Django项目,启 ...
- 四、IntelliJ IDEA 之 HelloWorld 项目创建及相关配置文件介绍
咱们通过创建一个 Static Web 项目大致了解了 IntelliJ IDEA 的使用界面,接下来,趁着这个热乎劲,咱们来创建第一个 Java 项目“HelloWorld”,进入如下界面: 如上图 ...
- 关于eclipse创建Maven项目创建的问题
1.问题: 为什么Maven Update Project JDK变回1.5 解释:官方文档 The Compiler Plugin is used to compile the sources of ...
- tfs中如何创建团队项目及如何操作团队项目
创建团队项目集合 tfs server管理控制台\团队项目集合页面.选择'创建集合'链接,按向导即可创建项目集合. 创建团队项目 创建好团队项目集合后,就要开始创建团队项目了. 进入vs,连接上tfs ...
- 分模块创建maven项目(一)
maven是一个项目构建和管理的工具. 我们可以通过maven仓库可以实现管理构建(主要是JAR还包括:WAR,ZIP,POM等等). 我们可以通过maven插件可以实现编译源代.产生Javadoc文 ...
- IOS5基础教程之一-----如何创建XCode项目
一.IOS的基础知识 1.只有一个应用程序正在运行.在IOS上,每一段时间内只能激活一个应用程序并在屏幕上显示. 2.只有一个窗口.只允许应用程序操作的一个窗口. 3.访问受限.只能在IOS为应用程序 ...
- m2eclipse简单使用,创建Maven项目 ,运行mvn命令(转)
前面介绍了如何安装m2eclipse,现在,我们使用m2ecilpse导入Hello World项目. 选择菜单项File,然后选择Import,我们会看到一个Import对话框,在该对话框中选择Ge ...
- .Net Core .Net Core V1.0 创建MVC项目
.Net Core V1.0 创建MVC项目 创建MVC项目有两种方式: 一.创建Web项目:(有太多没用的东西要去删太麻烦) 2.项目目录结构: 此种方法要注意的是,会创建好多个json文件,下面就 ...
- Django 从0开始创建一个项目
title: Django 从0开始创建一个项目 tags: Django --- Django 从0开始创建一个项目 创建Django工程及配置 创建工程:django-admin starproj ...
随机推荐
- JMeter一个错误the target server failed to respond--JMeter坑
问题:1.在测试一个http景象,特别是集波动TPS时刻,出现了一个错误.它现在是一个必须错误(压力顺利时却零星的错误,甚至很少见): 每次必现错误(開始一直怀疑是网络或程序的问题) 2.失败事务 ...
- MSN在Win7下80072f0d错误解决
近期电脑(笔记本联想 K41A)显卡出了点问题(该显卡一周前刚换的新的,竟然不到一周又出问题了,联想的质量真的...),在xp下电脑根本进不了操作系统,不断重新启动(可能驱动.系统垃圾太多有关),于是 ...
- animation与transition
animation 动画,无法直接决定开始时间 demo1 @-webkit-keyframes demo-animation1{ 0% { -webkit-transform:translate3d ...
- C# 执行存储过程
SqlParameter[] paras = BuildParas(id, time, name); bool bRet = ExcuteProcedure(“数据库连接字符串”, "存储过 ...
- Android Training: 设备管理
Android 设备管理 Android2.2 通过Android设备管理API提供对企业级应用的支持.设备管理API在系统级别提供了设备管理特性.这些API可以在企业环境下,需要对员工设备进行控制时 ...
- Android SQLite的使用2(非原创)
1.数据库的增.删.改.查:execSQL方法 public void insertAction() {//添加信息 db.execSQL("insert into Emp(name,sal ...
- Install cv2.so for Anaconda
sudo apt-get install python-opencv cp /usr/lib/python2.7/dist-packages/cv2.so /opt/anaconda/lib/pyth ...
- (原)Ubuntu16中安装cuda toolkit
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5655957.html 参考网址: https://devtalk.nvidia.com/default ...
- mysql install
./scripts/mysql_install_db --user=mahao01 --basedir=/home/mahao01/local/mysql --datadir=/home/mahao0 ...
- 高手总结的CSS执行顺序及其优先权问题汇总
今天在看一本书时又看到了”CSS优 先权“这个问题,感觉这个问题还是比较重要的,也算是样式的特异性吧,尤其是在面对较多.较深层.较复杂的样式属性时,理解CSS的加权计算方法对于重写 样式属性之类的问题 ...