`
墙头上一根草
  • 浏览: 154613 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

cocos2dx HelloWorld 第一个例子的代码解析

 
阅读更多


    前段时间一直在忙着游戏的开发工作,很少有时间看cocos2dx,最近时间比较充裕,又重新开始cocos2dx的学习工作。


    话说看了 testcpp的一些源码,看了各种例子和视频教程,到现在突然间觉得无从下手了,碉堡了,所以我觉得有必要梳理一下学习的思路,以免走错道。


    话不多说,开始记录


     首先按惯例开始创建第一个项目hello world,创建的方式很多种,在这里我用的是python脚本方式创建的,网上查看了一下,大家貌似都推荐这种创建方式,创建的步骤,在另外一边文章中有记录了,在这里就不多说了,网上的文章一大推,搜索方式 百度,输入cocos2dx python 肯定有答案的

     在这里给出一个我的简单记录地址:http://864343928.iteye.com/blog/2081967


   创建好项目之后,运行后看到的效果:
                 
              

 


    当然看到的不是hello world几个大字,我修改了一下,以表示我对运行成功之后的心情大笑

  

   以上是运行效果,现在看一下项目的结构,只看class文件中的结构,其他的以后有时间在介绍,如下:

 

                                              

 

     

 

      AppDelegate 游戏的入口,从oc衍生过来的, 里面包含游戏的启动,暂停以及结束等等方法

      HelloWorldScene 这个就是主场景得类

 

     AppDelegate 的bool AppDelegate::applicationDidFinishLaunching() 的方法中创建了一个场景,并让导演运行这个场景

 

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

    // run
    pDirector->runWithScene(pScene);

    然后在来看HelloWorldScene ,看代码可以知道,HelloWorldScene是一个层,她有一个方法是创建一个场景,然后还有一个宏,这个宏就是创建她本身即一个层

   //继承了一个层

     class HelloWorld : public cocos2d::CCLayer
{
public:
    // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
    virtual bool init(); 

    // there's no 'id' in cpp, so we recommend returning the class instance pointer

    //静态方法创建一个场景
    static cocos2d::CCScene* scene();
   
    // a selector callback
    void menuCloseCallback(CCObject* pSender);
   
    // implement the "static node()" method manually

    //一个实现宏,创建一个层就是helloWorldScene  他本身
    CREATE_FUNC(HelloWorld);
};

 

在来看helloworldscene的实现文件helloworldscene.cpp

 

   通过调用CCScene的静态方法,创建一个场景的指针,然后在调用HelloWorld的create的方法,创建一个层并且把层加入到场景中 看代码

 

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

 

当调用helloworld的create()方法时,这个方法首先会,调用helloworld类的构造函数,然后调用init() 初始化方法,然后告诉这个指针会自动释放内存,这样就完成了整个hello world项目的初始化工作。

  这个是helloWorldScene 的create()方法的宏定义

    #define CREATE_FUNC(__TYPE__) \
static __TYPE__* create() \
{ \
    __TYPE__ *pRet = new __TYPE__(); \
    if (pRet && pRet->init()) \
    { \
        pRet->autorelease(); \
        return pRet; \
    } \
    else \
    { \
        delete pRet; \
        pRet = NULL; \
        return NULL; \
    } \
}

 

  

    整个的流量是,appDelegate的初始化方法,调用helloWorldScene的 scene()方法,创建一个场景,而在helloWorldScene的scene()方法中,创建场景的同时,创建一个他自己本身的层并且加入到场景中,然后创建层的同时完成初始化的工作

  

 

  • 大小: 135.3 KB
  • 大小: 60.7 KB
分享到:
评论

相关推荐

    基于cocos2dx的一个小例子

    总的来说,"基于cocos2dx的一个小例子"是一个很好的学习资源,它揭示了Cocos2dx游戏开发的基本流程和关键技术,对于初学者而言,通过这个实例可以深入理解和掌握Cocos2dx框架,为进一步的游戏开发打下坚实基础。

    android项目中嵌入cocos2dx项目demo

    - 使用Cocos2dx命令行工具创建一个新的项目,如`cocos new HelloWorld -p com.yourcompany.helloworld -l cpp -a android`。 - 这个命令会生成一个包含C++源代码和资源文件的HelloWorld项目。 3. **集成到Android...

    cocos2d 3.4新建helloworld工程的例子代码及文档说明

    本文将深入解析Cocos2d 3.4版本中创建HelloWorld工程的实例代码,并提供相关的文档说明。 一、环境搭建 在开始Cocos2d 3.4的开发之前,首先需要安装必要的开发工具。这通常包括: 1. Cocos2d-x SDK:这是Cocos2d的...

    cocos2dx-2.x播放mp4

    Cocos2dx是一个基于C++的游戏开发框架,它提供了丰富的功能来帮助开发者创建2D和3D游戏。在这个场景中,我们将深入探讨如何在Cocos2dx 2.x中实现MP4视频的播放。 首先,Cocos2dx 2.x自身并不直接支持MP4格式的视频...

    cocos2dx 工具之CocosBuilder

    《Cocos2dx工具解析:聚焦CocosBuilder》 Cocos2dx是一个广泛使用的开源游戏开发框架,基于C++,支持跨平台的游戏开发,适用于iOS、Android、Windows等多个平台。在Cocos2dx的生态系统中,有一系列强大的辅助工具,...

    cocos2dx 精灵例子

    这个压缩包文件"testSprite"显然包含了一个关于如何在Cocos2d-x中使用精灵的示例,非常适合初学者学习。下面将详细介绍Cocos2d-x中的精灵及其应用。 1. **精灵(Sprite)概念**: - 精灵是Cocos2d-x中的一种基本...

    cocos2dx 捕鱼游戏代码例子可以在最新译成功

    这个“cocos2dx捕鱼游戏代码例子”是针对初学者的一个宝贵资源,可以帮助他们更好地理解和掌握Cocos2dx API的使用。 在捕鱼游戏中,你需要了解以下关键知识点: 1. **Cocos2dx架构**:Cocos2dx由多个模块组成,...

    cocos2dx_helloworld_+jsoncpp

    Cocos2d-x的“HelloWorld”项目是每个新开发者入门的起点,它展示了如何创建一个简单的显示“Hello, World!”的窗口。 2. **Jsoncpp解析** Jsoncpp是一个轻量级的JSON库,它支持C++98、C++11和C++14标准。Jsoncpp...

    cocos2dx小例子

    Cocos2dx是一个开源的游戏开发框架,基于C++,并提供了多种语言接口,如Lua和JavaScript,它为开发者提供了强大的2D游戏开发能力。本小例子将带你深入理解cocos2dx的核心概念和功能,特别是如何使用精灵和动画,以及...

    Cocos2dx中UIWebView替换为WKWebView

    在iOS开发中,Cocos2dx是一个广泛使用的游戏开发框架,它允许开发者创建跨平台的2D和3D游戏。然而,随着Apple对App Store审核政策的调整,使用UIWebView的App将不再被接受,因为Apple已经将其列为弃用API。在2020年...

    cocos2dx代码

    某手游cocos代码

    cocos2dx 游戏开发系列之三 源码

    在游戏开发领域,cocos2dx是一个广泛使用的开源游戏引擎,尤其在跨平台开发中扮演着重要角色。本篇将深入探讨cocos2dx游戏开发系列的第三部分——源码解析和Android工程的创建与迁移。 首先,cocos2dx是基于C++的,...

    cocos2dx游戏代码

    这个“cocos2dx游戏代码”压缩包包含的是一个基于Cocos2d-x实现的“马里奥”游戏源代码,由初学者小菜编写,他建议其他开发者可以参考其中的“emeny”类进行重写。 首先,我们要理解Cocos2d-x的核心概念。它是一个...

    cocos2dx3.x游戏开发之旅电子版

    Cocos2dx是一个开源的游戏开发框架,它基于C++,同时支持多种语言,如Lua和JavaScript,为跨平台游戏开发提供了强大的工具。 在Cocos2dx 3.x版本中,框架进行了诸多优化和改进,提高了性能,简化了API,使得开发者...

    cocos2dx 3.x 水波纹

    Birkemose的代码是一个很好的起点,但为了适应Cocos2dx v3.13,我们需要对原有的代码进行适配和优化。 在Cocos2dx 3.x中实现水波纹效果,我们主要依赖以下几个核心概念和技术: 1. **纹理(Texture)和精灵...

    cocos2dx斗地主服务端,客户端在我的资源列表中

    【标题】"Cocos2dx斗地主服务端与客户端详解" 在游戏开发领域,Cocos2dx是一款...通过对这些代码的分析和学习,开发者可以掌握网络游戏的设计原理,加深对Cocos2dx引擎的理解,以及如何构建一个跨平台的斗地主游戏。

    cocos2dx3.2的ScrollView改良

    基于cocos2dx3.2的ScrollView改良版,...由于cocos库太大,压缩包里已经移除cocos核心库,需要自行下载安装cocos2dx 3.2版本,并任意生成一个cocos2dx项目,把里面的cocos文件夹复制到ScrollViewDemo文件夹下即可。

    cocos2dx 2048

    《cocos2dx 2048:游戏开发与cocos2dx框架解析》 “cocos2dx 2048”是一个基于cocos2dx框架开发的流行数字拼图游戏,它仿照了2048游戏的玩法,通过编程技术将2D图形、动画和逻辑控制融合在一起,为玩家提供了趣味且...

    Cocos2dx入门初级教程

    确保所有依赖项都已正确配置,是成功进行Cocos2dx开发的第一步。 2. 创建新项目: 使用Cocos2dx的命令行工具,你可以轻松创建一个新的游戏项目。通过执行“cocos new”命令,指定项目名称和选择模板类型,即可生成...

    SublimeText启动cocos2dx3.0项目

    配置完成后,只需打开一个Cocos2dx3.0项目的Lua脚本,按下F7键,SublimeText就会调用`run.py`进行编译和运行,你可以在终端看到项目的输出结果。 总结来说,使用SublimeText启动Cocos2dx3.0项目,需要完成以下步骤...

Global site tag (gtag.js) - Google Analytics