• Cocos2dx开发(4)——Windows环境创建Cocod2dx 3.2第一个项目HelloWorld


    本文内容:cocos2dx+VS2013环境下创建项目,部分代码简析。会的朋友可以略过。

    前面简单安装了几个环境,程序完全可以顺利跑起来(其他的cocos-stadio这些需要用到再装)

    1、命令行形式创建自定义项目

    打开cocos2d根目录,运行一次 download-deps.py 和 setup.py(如果之前运行过可以直接开始新建项目)

     3.2版本好像又回到用命令的形式,也不麻烦所以笔者也没再去找别的方法创建项目。

    这里主要看一下了解两个命令,分别输入看一下他们有哪些参数

    cocos 和cocos new

    cocos new 项目名 –p 包名 –l cpp –d路径

    正式开始:在cocos根目录shift打开命令窗口:

    cocos new FirstDemo -p com.huoit.FirstDemo -l cpp -d F:CocosDemo 回车

    有的朋友可能想到了用批处理新建项目,不复杂,直接引用一下网友写好的,保存为.bat文件下次直接运行就可以

    @echo off  
    echo =============Cocos2D-x新建项目==============  
    set /p name=输入项目的名称:  
     
    echo 项目名为: %name%   
     
    echo 正在创建新项目...  
     
    set pack=com.richard.
     
    cocos new %name% -p %pack%%name% -l cpp  -d F:Cocos2dDemo
     
    echo 创建完成.
    pause

     这里笔者生成项目FirstDemo

    2、项目目录

    创建完成后打开对应项目目录下的解决方案 FirstDemoproj.win32FirstDemo.sln。如下文件结构

    打开win32看到main.cppmain.h程序入口,Classes文件夹里定义了AppDelegate和HelloWorldScene

    3、HelloWorld

    继续说之前,先了解下导演、场景、层、精灵的概念

    导演是一个游戏流程的操控者,往下一个游戏可以划分为不同的场景,一个场景又可以分为不同的层,一个层又可以拥有任意个可见的游戏节点(即对象,游戏中基本上所有的类都派生于节点类Node)。可以执行Action来修改游戏节点的属性,使其移动、旋转、放大、缩小等等。

    ①:main.cpp入口,程序走起

    AppDelegate app;//继承自Application
    return Application::getInstance()->run();//运行

    ②:AppDelegate.h看到引入的命名空间和宏,构造函数析构函数,这里主要看三个函数代表着程序的生命周期,第一个是加载时候初始化导演场景这些,后面两个分别是程序后台和后台回到前台的函数(如下),源代码里的注释其实也很清晰,可以自行查看

        /**
        加载初始化
        */
        virtual bool applicationDidFinishLaunching();
    
        /**
       前台到后台运行
        */
        virtual void applicationDidEnterBackground();
    
        /**
        后台到前台运行
        */
        virtual void applicationWillEnterForeground();

    对应cpp里的实现,主要就干这几件事

    加载:初始化Director,GLView,设置FPS。初始化场景,运行;

    后台:Director调用stopAnimation

    前台:Director调用startAnimation

    ③:HelloWorld,看到它继承Layer

    class HelloWorld : public cocos2d::Layer
    {
    public:
        // there's no 'id' in cpp, so we recommend returning the class instance pointer
        static cocos2d::Scene* createScene();
    
        // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
        virtual bool init();  
        
        // a selector callback
        void menuCloseCallback(cocos2d::Ref* pSender);
        
        // implement the "static create()" method manually
        CREATE_FUNC(HelloWorld);
    };
    HelloWorldScene.h

    前面声明一个Scene,初始化init(),和一个调度方法。这里主要说一个CREATE_FUNC(HelloWorld);

    怎么理解呢,这个宏的定义有点类似于C#里面的泛型,create()对应类型的一个实例。

    cpp:

    auto关键字有点类似于C#的var,但是应该也是要明确等号右边对象类型

    Director::getInstance()->getVisibleSize();获取可视的大小

    Director::getInstance()->getVisibleOrigin();获取坐标起点

    setPosition设置位置

    addChild(对象,z轴位置):回想上面的树结构,就是将下层的对象放入到父对象容器里(精灵加入layer,layer加入场景)

    cpp里的实现注释很详细,不再多废话了,这里仅仅是一个摘要式的笔记,还有多看看官方的文档和代码

    还有要说的就是从简单的HelloWorld看到3.2里面的小变化,就是对cocos2d命名空间下的类重新进行了封装,看到之前版本的CC_BREAK_IF这些都看不到了,仅从书写简洁了些许




    1、如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!
    2、欢迎各位转载,但是未经作者本人同意,转载文章请在文章页面明显位置标明作者和原文连接,否则保留追究法律责任的权利。
    作者博客: http://www.cnblogs.com/xmai/
  • 相关阅读:
    pycharm右键无file Encoding问题解决
    IDEA build 时报无效的源发行版: 9 和 无效的目标发行版: 9
    LNMP与LAMP框架的简介及原理
    Dynamics CRM实体系列之键
    Dynamics CRM实体系列之图表
    Dynamics CRM实体系列之视图
    Dynamics CRM实体系列之窗体
    Dynamics CRM实体系列之字段
    Dynamics CRM实体系列之实体讲解
    Dynamics CRM字段安全配置文件
  • 原文地址:https://www.cnblogs.com/xmai/p/4034320.html
Copyright © 2020-2023  润新知