cocos2dx基础篇(1) Cocos2D-X项目创建
已经入行工作半年多时间了,以前都是把这些东西记录在有道云上面的,现在抽出些时间把以前的笔记腾过来。
具体的环境配置就不用说了,因为现在已经是2018年,只需要下载对应版本解压后就能使用,不用再像多年前那样配置环境
需要的安装包:vs2013,cocos2d-x-2.2.3.zip,python-2.7.8
我自己用的是cocos2d-x-2.2.6,学习最初用的这个版本,后来才用的3.x版本
项目创建方法(使用python创建)
-
cocos2.x版本
在tools\project-creator文件夹下有 create_project.py 进入这个文件夹
cd D:\cocos2d-x-2.2.6\tools\project-creator
然后 d:
创建工程目录:
python create_project.py -project projectname -package com.XXXX.XXXX -language cpp
python create_project.py:运行脚本的工具以及创建工程的脚本
-project projectname:工程名
-package com.XXXX.XXXX :包名
-language cpp:开发语言,可选项有cpp,lua,javascript
产生的目录路径:D:\cocos2d-x-2.2.6\projects
-
cocos3.x版本
没有tools\project-creator文件夹
cd G:\cocos2dx\cocos2d-x-3.16
创建工程目录:
cocos new HelloWorld -p com.LMX.HelloWorld -l cpp -d projects
cocos new -l lua -p com.org.Gao -d F:\cocosPorject
查看cocos2d版本
在工程目录libcocos2d下面有一个文件cocos2d.cpp
#include "cocos2d.h"
NS_CC_BEGIN
const char* cocos2dVersion()
{
return "cocos2d-x 2.2.6";
}
NS_CC_END
工程的入口,从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
AppDelegate app; // delegate表示代理
CCEGLView* eglView = CCEGLView::sharedOpenGLView(); // shared表示单例
eglView->setViewName("WangGuiLin");
eglView->setFrameSize(1024, 768);
return CCApplication::sharedApplication()->run();
}
真正意义上的入口
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
CCDirector* pDirector = CCDirector::sharedDirector();
CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();
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 / 60);
// 创建场景
CCScene *pScene = HelloWorld::scene();
// 运行场景
pDirector->runWithScene(pScene);
return true;
}
上面运行了由HelloWorld创建的场景,接下来看看HelloWorld
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__
#include "cocos2d.h"
class HelloWorld : public cocos2d::CCLayer
{
public:
// 真正的初始化
virtual bool init();
// there's no 'id' in cpp, so we recommend returning the class instance pointer
static cocos2d::CCScene* scene();
// 回调函数
void menuCloseCallback(CCObject* pSender);
// 里面调用了初始化
CREATE_FUNC(HelloWorld);
};
#endif // __HELLOWORLD_SCENE_H__
这里的scene()只创建scene和layer,并将layer加入scene,然后返回scene
CCScene* HelloWorld::scene()
{
// 创建场景
CCScene *scene = CCScene::create();
// 创建层
HelloWorld *layer = HelloWorld::create();
// 将层加入场景
scene->addChild(layer);
// 返回场景
return scene;
}