cocos2dx学习之路----第三篇(创建场景)

这一篇我们来讲解一下在cocos2dx中场景的创建。

在上一篇中,我们对HelloWorld的整个运行机制进行了分析。相信读者对概念性的问题可能理解了一些,那现在我们就来创建出属于自己的场景吧。

以后我们例子的讲解将会一直基于我们第一篇所创建的TestFor_3_9的工程,就不用再新建一个项目了。

好,现在我们进入解决方案,在src目录上新建筛选器,命名为:MyScene。(这里我顺便整理了HelloWorld类和AppDelegate类)这样方便管理自己所创建的类。


好,下面开始创建我们自己的类吧,对刚刚的筛选器右键添加-->新建项,然后新建MyFirstScene.h及MyFirstScene.cpp,如下图所示:



好,类创建完成之后,我们需要开始对场景进行编写了,还记得HelloWorld这个类的实现思路吗?

我们先来捋一捋:

1.首先这个类是继承自Layer的,其实我们也可以不继承Layer,直接继承Scene,然后实例化出来即可,不过我们还是模仿一下Helloworld的思路,写出我们自己的HelloWorld出来;

2.实现了创建场景的静态方法;

4.重写了初始化方法;

5.在给这个类实现 create方法,即调用宏CREATE_FUNC。

以上就是HelloWorld类的设计思路。我们就模仿一下来实现自己的HelloWorld吧~

直接来看MyFirstScene.h和MyFirstScene.cpp的代码编写吧~

MyFirstScene.h:

#pragma
#include "cocos2d.h"				//包含头文件

using namespace cocos2d;			//使用cocos2d命名空间

class MyFirstScene : public Layer		//新建一个类,继承层(Layer)
{
public:
    static Scene* createScene();		//MyFirstScene场景创建实现

    virtual bool init();			//MyFirstScene层的初始化

    CREATE_FUNC(MyFirstScene);			//创建MyFirstScene的Create方法

};

有没有看到熟悉的代码?是的,跟HelloWorld.h差不多一样。只不过少了一个按钮的监听函数。然后具体的代码我就不再多说了,上面也有注释。下面是.cpp的实现:


MyFirstScene.cpp:

#include "MyFirstScene.h"

//MyFirstScene场景创建实现
Scene* MyFirstScene::createScene()
{
    auto scene = Scene::create();	//创建一个场景
    auto layer = MyFirstScene::create();//创建一个MyFirstScene层
    scene->addChild(layer);		//把MyFirstScene层加入刚刚创建的场景中,
    return scene;			//返回这个场景
}

bool MyFirstScene::init()
{
    if ( !Layer::init() )	//先初始化父类的init方法,如何初始化失败,则创建MyFirstScene层失败
    {
        return false;
    }
	Size VisibleSize = Director::getInstance()->getVisibleSize();	//获得屏幕大小

	auto label = Label::createWithSystemFont("Hello,This is MyFirstScene", "fonts/arial.ttf", 30);//创建一个标签
	label->setPosition(Vec2(VisibleSize.width / 2, VisibleSize.height / 2));//设置位置
	this->addChild(label);//把标签添加到层上

    return true;
}
这里需要提一下的是,由于我们上面使用了CREATE_FUNC()这个宏定义,所以,在MyFirstScene这个层被创建的时候就会调用它的init()方法,希望读者还没有忘记。

然后我们的这个场景在初始化的过程中只是创建了一个标签加入到场景来。

好了,这样就可以运行了吗?

并不可以,我们知道,在之前提到,场景的管理者是Director这个类。所以我们还没有让Director运行我们这个场景。默认的它是运行HelloWorld场景!

所以,我们需要进入到Appdelegate.cpp中去修改Director运行的场景!

找到这么一句代码:

 auto scene = HelloWorld::createScene();

然后修改为:

 auto scene = MyFirstScene::createScene();

记得,改之前必须把MyFirstScene.h这个头文件包含进来,就是在Appdelegate.cpp中添加这个头文件。

现在就可以调试运行了~

结果如下:


以上就是实现自己场景的创建!这一篇没讲那么多,因为太多反而适得其反,不如简单慢慢的接受会好一点哈,不过如果属于关键的问题还是要讲清楚哈~下一篇就来讲讲关于场景的切换吧~大笑

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值