***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************

继续慢慢学习。cocos2d-x

这次来说说两个类,Scene和Layer。即场景类和图层类。

曾经学cocos2d-x的时候听过,这个引擎就跟拍电影一样,有导演(Director),有大背景(Scene),还有背景上的小修饰物(Layer),还有人物(Sprite)。

大体关系就是酱紫啦~

再上一张图,没图我说个X(屏蔽不良语言)

--------------------------------------------------偶是切割线。加个小凝视----------------------------------------------------------------------

这里有一张cocos2d-x全部类的一张关系图表。是用Xmin做的,我看着非常赞。

能够戳这个网址去下载。须要1积分。gamecocos2dx制作的。里面另一些凝视,挺不错:

http://download.csdn.net/detail/gamecocos2dx/7281687

假设不想下载Xmind,能够看PNG格式的图,在我的下载页,可是有一些凝视无法显示:

http://download.csdn.net/detail/lx417147512/7657073

学习cocos2d-x还是要多看看API,

假设。网络同意,能够看看中文API:http://cn.cocos2d-x.org/doc/cocos2d-x-3.0/index.html

当然,不妨看英文版的:http://www.cocos2d-x.org/reference/native-cpp/V3.2/index.html

最最起码,人家是最新版本号的=。=

假设。网络不同意,也有离线版本号API。仅仅有英文的,是3.0的:

http://download.csdn.net/detail/lx417147512/7656953

用法:解压以后,搜索里面index.html文件。打开就可以   ~(*^__^*) ~

--------------------------------------------------偶是切割线,加个小凝视----------------------------------------------------------------------

OK,言归正传。

今天,来学习一下Scene和Layer(额。。。这是第二次说了o(╯□╰)o)

Scene,它在API中解释是:

Scene是一个抽象的概念,它仅作为Node的子类,

Scene和Node差点儿同样,不同的是Scene的默认的锚点在屏幕中心。

{PS:What 是 锚点?   能够看这个http://jingyan.baidu.com/article/a501d80cf003deec630f5e14.html

简单来说,锚点就相当于我们要把一张画订在墙上,我们仅仅用一个钉子,钉子的位置就是锚点}

另一些,无用的巴拉巴拉巴拉~(无视掉这句话也行)

也可看这张继承图:

恩,这个图显示除了父类和子类关系。

如今,来试一试把。光说不练假把式。

我用的VS2012,新建一个类(我这新建类。仅仅能建立在WIN32中,不能在类图下,仅仅能通过加入新建项加在Classes中。XX死了。希望有大牛有什么好方法能指导一下。感激不尽!)

打开一个新建的项目,

加入WelcomScene类(.h和.cpp)

这样增加的类是空白的类,里面内容须要我们自己去填写。

先编辑头文件(我是将HelloWorldScene.h的复制了过去,将用到类名的地方全改成了自己的WelcomeScene)

#include "cocos2d.h"

class WelcomeScene : public cocos2d::Layer
{
public:
// 创建场景函数
static cocos2d::Scene* createScene();
// 是一个宏定义
CREATE_FUNC(WelcomeScene);
};

这里 CREATE_FUNC是一个宏定义。等同于:

static WelcomeScene* create(){
WelcomeScene* pRet = new WelcomeScene();
if(pRet && pRet->init()){
pRet->autorelease(); //自己主动释放资源
}else{
delete pRet;
pRet = NULL;
}
return pRet;
}

恩,接下来定义.cpp文件:

#include "WelcomeScene.h"

USING_NS_CC;

// 创建场景函数
Scene* WelcomeScene::createScene()
{
auto scene = Scene::create();
return scene;
}

包括WelcomeScene头文件。

USING_NS_CC是应用cocos2d的命名空间,

就是有些不须要写cocos2d::了。

然后 如今就能够看看我们的作品啦~。~

跳转到  AppDelegate.cpp  中

bool AppDelegate::applicationDidFinishLaunching()函数

倒数第三行创建一个场景改成:

auto scene = WelcomeScene::createScene();

(对了,不要忘了在AppDelegate中加 WelcomeScene的头文件)

然后点击执行~。~

当~当~当当!   一片漆黑!

没错,这就对了!

上面我们也说到了我们仅仅是建立了一个场景,可是场景上空无一物啊!

所以。接下来就是Layer的事情啦~

Layer在API中说明:

Layer是Node类的子类。它实现了触屏代理协议。

也就是说,实现触屏的这些东东,就是在Layer上咯。

继续上图,无图不说话呀~。~

这个比Scene震撼了点吧。。嘿嘿

总之,Layer就是一个图层。最上面的图也说明了:

Scene由两部分组成Layer和Menu,就是界面和菜单。

接下来,在我们项目中实现一下肿么弄~。~

在WelcomeScene.h 中加入函数:

 virtual bool init();  

然后,对应在.cpp中编辑这个函数:

bool WelcomeScene::init()
{
// 推断能否初始化,若不能则直接返回,退出。
if ( !Layer::init() )
{
return false;
}
//获取屏幕的长宽
Size visibleSize = Director::getInstance()->getVisibleSize();
Point origin = Director::getInstance()->getVisibleOrigin(); // 创建一个精灵,载入一个图片
auto sprite = Sprite::create("backg.png");
sprite->setPosition(Point(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
this->addChild(sprite, 0); return true;
}

PS:

①此处加入的图片是自己找的,最好要找一个PNG格式的。

将图片存在项目文件夹下的Resource文件夹下。回到VS2012右键点击Resource。选择加入现有项,把图片加入进来就OK了(貌似,直接把图片加入到Resource文件夹下就能够直接调用了。)

②这里的addChild,就是将这个精灵放在这个图层中。第一个參数是放哪个精灵,第二个參数就是第几层,比如添1的能把填0的覆盖掉。假设同一层。就是同为0。后增加的会覆盖掉前面的。

然后将createScene函数改动为:

// 创建场景函数
Scene* WelcomeScene::createScene()
{
auto scene = Scene::create();
auto layer = WelcomeScene::create();
scene->addChild(layer);
return scene;
}

表示,在创建场景时候,我们要加入一个图层。而加入这个图层要调用WelcomeScene中的create函数,就是我们之前编辑的函数。

这样。执行一下。我们的东东就出来咯~。~

我的这个,显示的大小略有问题,没有调整。

额。

。。这不是关键,关键是它出来了即可啦。

接下来。看一看HelloWorldScene的一些其它东东:

加一个文字。

加一个button。

这些就好弄咯。

加入东西。就是三步:

1.加入

2.设置增加的位置,假设有回调函数,要写出来函数名称

3.增加到场景中

恩,就到这里了。( ⊙o⊙ )。 12点半了(半夜)。。。。

赶紧睡觉去了⊙﹏⊙b

***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************

cocos2d-x 之Scene和Layer的更多相关文章

  1. XCode5添加新建类模板(Cocos2dx Template Class for Scene or Layer)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=505 因为常用cocos2dx开 ...

  2. 14、Cocos2dx 3.0三,找一个小游戏开发Scene and Layer:游戏梦想

    发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30474393 Scene :场景 了解了Director ...

  3. cocos2d基本类介绍 director/scene/layer/sprite

    [核心类]     导演Director.场景Scene.布景层Layer.精灵Sprite的概念请移步:     导演控制场景,场景控制图层,图层控制精灵,精灵控制动作.     相互之间的关系框架 ...

  4. cocos2dx[3.2](7) 核心类Director/Scene/Layer/Sprite

    [核心类] 导演Director.场景Scene.布景层Layer.精灵Sprite的概念请移步: cocos2dx基础篇(2) 第一个程序 导演控制场景,场景控制图层,图层控制精灵,精灵控制动作. ...

  5. 小尝试一下 cocos2d

    好奇 cocos2d 到底是怎样一个框架,正好有个项目需要一个游戏框架,所以稍微了解了一下.小结一下了解到的情况. 基本概念 首先呢,因为 cocos2d 是基于 pyglet 做的,你完全可以直接用 ...

  6. ios游戏开发--cocos2d学习(2)

    在第一节中简单介绍了2d项目模板HelloWorld的基础代码,并做了一点小小的改变,像触摸接收.旋转.移动和颜色转变序列CCSequence的使用等等,2d本身封装好了很多方便使用的动作,只需要调用 ...

  7. ios游戏开发--cocos2d学习(1)

    学习cocos2d需要一定的编程基础,最好了解objective-c的语法.至于下载和安装的过程网上有很多,这里不多介绍,直接进入项目的学习. 创建一个cocos2d项目,直接运行,效果如图: 左下角 ...

  8. 创建一个cocos2d-x工程添加一个自定义Scene并显示

    #include "cocos2d.h" class RunScene :public cocos2d::CCLayer { public: virtual bool init() ...

  9. [cocos2d]场景切换以及切换进度显示

    本文主要分两个部分叙述,第一是场景切换,第二是场景切换的进度显示. 一.场景切换 参考learn-iphone-and-ipad-cocos2d-game-development 第五章内容 coco ...

随机推荐

  1. PrintWriter与outputStream区别

    网上截取: printWriter:我们一般用来传的是对像 而outputStream用来传的是二进制,故上传文件时,一定要使用此. PrintWriter以字符为单位,支持汉字,OutputStre ...

  2. 关于codestyle

    如果你的代码易于阅读,那么代码中bug也将会很少,因为一些bug可以很容被调试,并且,其他开发者参与你项目时的门槛也会比较低.因此,如果项目中有多人参与,采取一个有共识的编码风格约定非常有必要. 以t ...

  3. 命令 修改WAMP中mysql默认空密码

    WAMP安装好后,mysql密码是为空的,那么要如何修改呢?其实很简单,通过几条指令就行了,下面我就一步步来操作. 首先,通过WAMP打开mysql控制台. 提示输入密码,因为现在是空, WAMP安装 ...

  4. PowerShell Remove all user defined variable in PowerShell

    When PS scripts executes, it is possibly create much user defined variables. So, sometimes these var ...

  5. AMD模块化JS

    参考http://ourjs.com/detail/52ad26ff127c76320300001f Offcial Site http://requirejs.org/ 下载http://requi ...

  6. socket 通信 入门3 android 客户端 C# 服务端

    这是一个android端操控服务器的例子  就是发送简单指令到服务器  然后服务器响应什么的... 当然这里是未完成的  只是简单展示一下大致思路 首先连接建立起来后  服务端给客户端一条信息  告诉 ...

  7. IAR Embedded Workbench for ARM 6.50.6 & 6.60.1 破解补丁

    IAR EWARM 6.50.6 & 6.60.1 破解 破解原理和方法见:http://blog.csdn.net/chivalrys/article/details/8564568 IAR ...

  8. delphi 文件夹权限设置(执行一个小脚本的笨办法)

    如题,研究了一天,也没再网上找到比较好的方式,自己做了一个.方法如下: 1.创建一个 cmd 命令文件.2.调用该命令. 代码如下:   S:='echo y|cacls h: /t /c /g ev ...

  9. 将MFC Grid control封装为DLL的做法及其在DLL中的使用方法

    MFCGrid control是一款非常优秀的网格控件,支持非常丰富的界面元素,如下图: 因而在数据库程序及报表程序应用较为广泛,其源码可以在下面下载到: MFC Grid control2.27源码 ...

  10. iOS自定义控件教程:制作一个可重用的旋钮

    当你的APP需要一些新功能时,自定义UI控件会十分有用,尤其是这些自定义控件可以在其他APP里面很好的重用.Colin Eberhart写过一篇很棒的介绍自定义UI控件的教程.这个教程涉及的是一个继承 ...