cocos2dx 3.1从零学习(一)——入门篇(一天学会打飞机)


    我们有C++基础,学习引擎总是急于求成,想立马做出一款简单的游戏给朋友玩。但是我们往往看了很多资料却一直不知道如何下手去写,有时候只要能走出第一步我们就会游刃有余,但是眼高手低的我们不是大神,需要有人指引一下。这里我就写一下我是如何入门学习cocos2dx3.1的,给大家参考一下。

    如果你想第一天就写出微信打飞机,请耐心去阅读。我也是一个菜鸟,博客难免粗糙和出错,请大家谅解。加油吧!


    我们创建工程后总会自带一个HelloWorld类,短短的几行代码就出来了一个游戏的雏形,请问我们真的理解它了吗?如果我们能早一点弄明白这几行代码,我们或许会比现在走得更远。


理解HelloWorld

    HelloWorld去掉退出按钮只有下面三个函数。

          static cocos2d::Scene* createScene();
           virtual bool init(); 
           CREATE_FUNC(HelloWorld);//一定要自己看源码

    这三个方法一定要做到透彻理解和重写因为所有的游戏场景都需要这三个函数


    创建游戏HelloWorld场景的时候,只需要在AppDelegate写一句: Helloworld::createScene();

请看它的实现

    // 'scene' is an autorelease object
    auto scene = Scene::create();
   
    // 'layer' is an autorelease object
    auto layer = HelloWorld::create();
 
    // add layer as a child to scene
    scene->addChild(layer);
 
    // return the scene
    return scene;

    首先新建一个新场景,然后create一个HelloWorld层并添加到新创建的场景,最后返回这个场景给AppDelegate

    一个场景的创建和展示就是这么简单,但是你有没有发现HelloWorld中没有create呢?并且没有调用init()方法呢?我们在HelloWorld中没有在任何地方看到调用init初始化那么这是在哪里调用的呢

    请看CREATE_FUNC的宏定义:

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

\表示换行因为宏定义代码如果放同一行阅读不方便

    可以看到CREATE_FUNC宏其实是定义了一个静态成员函数,这个函数可以new一个新的对象,并对其进行init()操作。

    这样整个Helloworld的逻辑就清晰了:

          外部类调用static cocos2d::Scene* createScene();来创建一个新的场景。  CREATE_FUNC(HelloWorld);是定义一个静态的create类成员函数,并在这个函数中调用virtual bool init();初始化这个场景。 

            以后每当我们新建一个场景的时候,按照这个格式即可。好了,下面该动手了。

    现在请删除Helloworld新建一个叫MainScene的场景,完善该类,修改AppDelegate.cpp中的场景创建为auto scene = MainScene::createScene();运行展示新的场景。(这个时候整个屏幕还是黑暗的,,因为没有任何元素显示)。


    注意:如果是新手我建议你再看一下Helloworld里面这三句代码的定义

  • 21
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值