【Cocos2dx】Windows平台下Cocos2dx 2.x的下载、安装、配置,打造本身的Helloworld

Cocos2dx就不废话介绍了, 很火的游戏引擎。关键是它开源。可以免费下载、学习、开发。不用搞这么多激活的东西。javascript

如下以Cocos2dx 2.x为例说明这个平台的一些基本东西。尽管现在Cocos2dx早已去到3.x的稳定版本号,但之因此选用Cocos2dx 2.x版本号。主要是这方面的资料比較多,原本搞Cocos2dx的人就很少了,搞了也没几我的写写编程记录,再去毫无资料仅仅有一堆难以看懂的官方文档的Cocos2dx 3.x,基本上等于瞎整。php

首先,由于这引擎在Windows的主流平台是经过你们熟悉的C++写出来的。因此Cocos2dx 2.x的开发,你首先要准备Visual Studio 2010以上的版本号。假设你选用Cocos2dx 3.x还要支持准备Visual Studio 2012以上的版本号。已经不支持Visual Studio 2008了。这就没办法了,怪怪下载一个完整安装。网上一搜一堆。不说了。css

以后,由于Cocos2dx 2.x在当今站点的最后一版2.2.6再也不提供InstallWizardForVS2010.js这鬼东西。需要用python语言建立新的project,所以你可以參看我以前的《【Python】Windows版本号的Python开发环境的配置,Helloworld,Python中文问题。输入输出、条件、循环、数组、类》(点击打开连接)先配好Python2.x的环境。java

而后,你才在Cocos2dx的中文官网(点击打开连接)。例如如下图,拉到最如下。下载Cocos2dx 2.x版本号。python

详细下载地址为:http://54.192.159.100/cocos2d-x-2.2.6.zip?fid=D2qKo-*f7vaAbUj7fijGQlgs5hzdkV4YAAAAAOeOX4E0-gk5fRKd*Y-Bb8j7lCvn&mid=666&threshold=150&tid=5D3FD9855047216E67D27C85E859FC2D&srcid=119&verno=1android


下载以后,获得一个cocos2d-x-2.2.6.zip,解压。这个解压位置就是你之后cocos2dx的开发环境、project的所在文件夹。和php是同样的,很差迁移。请当心选择。ios

在你的cocos2dx的解压文件夹找到build-win32.bat这东西,双击执行。编程


经历例如如下的一个漫长的编译过程:windows


搞好以后,会出现例如如下的一个界面,cocos2dx官方提供的一大堆样例,有兴趣看看以后,可以直接关闭。数组


至此。Cocos2dx的配置完毕。

如下建立一个属于咱们本身的Helloworld。不要用官方的样例。根本看不出什么端倪。

利用命令行进入.\cocos2d-x-2.2.6\tools\project-creator这个目录。利用python命令,例如如下图,建立一个工程。

create_project.py -project 你的工程目录名称 -package 包名 -language 开发语言(基本上为cpp,不排除有大神精通肥猪流的Lua,也不建议使用javascript开发!)


在建立的过程当中,可能会有如上图的报错,不用管,因为你建立的MyDemo工程已经成功出现在.\cocos2d-x-2.2.6\projects目录了,进入.\cocos2d-x-2.2.6\projects\MyDemo\proj.win32打开HelloCpp.sln,開始利用Cocos2dx引擎(框架)在Windows上开发游戏。

你可以观察到在.\cocos2d-x-2.2.6\projects\MyDemo。出现proj.android、proj.ios等平台的目录。这里意味着。你可以在这些平台相同利用Cocos2dx引擎(框架)进行开发。

不是说一个平台开发,多平台共同编译……


打开HelloCpp.sln以后,等待Visual Studio 2010载入一大堆外部库以后,你可以看到例如如下的文件结构:


首先。你要明确一个概念。Cocos2dx中最简单的Helloworld,是由一个叫Helloworld的场景、而后在这个Helloworld场景上放上一个Helloworld字符串所组成的。

官方初始的Helloworld还在Helloworld这个场景中放上背景图片、关闭button等杂七杂八的东西。让Helloworld文件看起来比較复杂。

咱们先从上图的main.cpp与AppDelegate.cpp入手,先设置好程序的一些基本东西。

首先是main.cpp。这东西的主函数就5行代码,将其关于程序标题与窗体尺寸的1八、19行进行改动。例如如下:

#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;
    CCEGLView* eglView = CCEGLView::sharedOpenGLView();
    eglView->setViewName("HelloWorld");//改动程序执行的标题为Helloworld
    eglView->setFrameSize(1024, 768);//修成程序执行的尺寸为1024x768
    return CCApplication::sharedApplication()->run();
}

其他代码看不懂临时先不要管,就像你当初学C语言,没必要在意#include<stdio.h>与void main(){}是什么鬼,你首先要会改printf()中的内容。关于引入、函数这些东西。回头再来学。


以后,尚未改完,对AppDelegate.cpp进行改动,把第22行的帧数调试信息关了。第25行的帧数有兴趣可以改下。只是改了也看不出效果。改动例如如下:

#include "AppDelegate.h"
#include "HelloWorldScene.h"

USING_NS_CC;

AppDelegate::AppDelegate() {

}

AppDelegate::~AppDelegate() 
{
}

bool AppDelegate::applicationDidFinishLaunching() {
    // initialize director
    CCDirector* pDirector = CCDirector::sharedDirector();
    CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();

    pDirector->setOpenGLView(pEGLView);
	
    // turn on display FPS
    pDirector->setDisplayStats(false);//关闭调试信息

    // set FPS. the default value is 1.0/60 if you don't call this
    pDirector->setAnimationInterval(1.0 / 60);//这里是设置游戏执行的帧数锁定为60,通常牛B机器、牛B的游戏都是锁这个帧数,30帧是低配

    // create a scene. it's an autorelease object
    CCScene *pScene = HelloWorld::scene();

    // run
    pDirector->runWithScene(pScene);

    return true;
}

// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground() {
    CCDirector::sharedDirector()->stopAnimation();

    // if you use SimpleAudioEngine, it must be pause
    // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}

// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground() {
    CCDirector::sharedDirector()->startAnimation();

    // if you use SimpleAudioEngine, it must resume here
    // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
其他那些什么初始化代码之类。看不懂,先不要管,也不要改。

以后,对整个程序的核心,管理HelloWorld这个场景的HelloWorldScene.cpp进行改动。放上属于咱们本身的东西,去掉官方的东西。主要对HelloWorldScene.cpp中的初始化參数bool HelloWorld::init(){}进行改动。其他不要动。整个HelloWorldScene.cpp改动例如如下:

#include "HelloWorldScene.h"

USING_NS_CC;

CCScene* HelloWorld::scene()
{
    // 'scene' is an autorelease object
    CCScene *scene = CCScene::create();
    
    // 'layer' is an autorelease object
    HelloWorld *layer = HelloWorld::create();

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
	//保留已经存在的初始化部分。不要进行改动,開始
    if ( !CCLayer::init() )
    {
        return false;
    }
    
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
    //保留已经存在的初始化部分。不要进行改动。结束
	
	
    CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", 96);//声明一个标签文本Helloworld,其字体为Arial。字号为96
    pLabel->setPosition(ccp(origin.x + visibleSize.width/2,//设置标签文本的位置ccp是必须的。visibleSize.width/2为屏幕的中央。前面的origin.x是必须加上,用于多平台固定好位置
                            origin.y + visibleSize.height/2));//y部分同理
    this->addChild(pLabel, 1);//把这个标签文本Helloworld放到场景中。层叠关系为1,至关于css中的z-index,这个数字越大,越在上面
    return true;
}


void HelloWorld::menuCloseCallback(CCObject* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
	CCMessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");
#else
    CCDirector::sharedDirector()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#endif
#endif
}

利用Ctrl+F5执行。或者点击上方的执行button则看到例如如下效果:

假设在编译的时候,遇到例如如下图的“LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”错误:

那不关Cocos2dx的问题,是由于电脑中有多个Visual Studio冲突。或者以前版本号的Visual Studio没有卸载干净。

当前系统中存在两个cvtres.exe文件,版本号不一样就会有问题了。

咱们让VS2010直接使用系统的cvtres.exe程序。

重命名或删除:(vs2010安装的位置).\VC\bin\cvtres.exe

如图,我就把cvtres.exe搞成_cvtres.exe完事。


最后总结一下,Cocos2dx的Helloworld比起SSH算是简单多了。代码清晰。关键是注意好版本号,正如php5.5以后不支持windows2003这种问题,你必须搞清晰Visual Studio 2010仅仅能支持Cocos2dx 2.x之类的。就是安装可能有些繁琐,毕竟python环境的安装对于很是多人来讲比較陌生。Visual Studio 2010的安装的耗时实在是无力吐槽了,再加上Cocos2dx 2.x的编译过程,就是比較久。最主要网上不少蛋疼的资料就不说了……