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;
}

 

posted @ 2018-07-17 12:43  穆玄琅  阅读(1206)  评论(0编辑  收藏  举报