COCOS学习笔记--Layer作用及其2种创建方法

Layer是处理玩家事件响应的Node子类,它通常包含的是直接在屏幕上呈现的内容。

Layer的作用主要包括两方面
1.接受用户的输入事件。包括触摸(例如屏幕点击、滑动)、加速度计(例如赛车游戏倾斜手机响应事件)和键盘输入(例如登录输入框)等;

2.用来显示sprite、文本等游戏元素,并设置游戏元素的属性,比如位置、方向、大小、动作等。


在组织好层后,只需要把层按照顺序添加到场景中就可以显示出来了。要向场景添加层我们可以使用addChild()方法:
addChild(Node child);
addChild(Node child, int zOrder);
addChild(Node *child, int zOrder, int tag)
对于场景而言,通常我们添加的节点就是层。 新添加的层会覆盖到之前添加的层之上,我们可以通过指定zOrder的值来修改layer的层级次序。tag是元素的标识号码,如果为子节点设置tag值,就可以在它的父节点中利用tag的值找到它。

下面说一下Layer的2种创建方式:
方法一.直接创建
//通过create()方法直接创建layer
auto layer = Layer::create();
//将layer添加到父节点上
this->addChild(layer);

方法二.通过继承关系进行创建
也就是在工程中重写一个类,让其继承自Layer类,并重写其init()和create()方法,然后我们就可以通重写的create()方法使用这个继承自Layer的类。
具体步骤如下:

1).创建新类的头文件MyLayer.h和C++文件MyLayer.cpp,并让该类继承自Layer类,注意新创建的这两个文件既要放在cocos整个项目工程的Class文件目录下,又要放在我们运行平台对应的工程目录下,由于我是在win平台上的sln工程,所以我还要将这两个文件拷贝一份放在proj.win32这个工程目录下。


2).在.h头文件中声明重写的init()和create()方法。我们看一下.h头文件:
//MyLayer.h文件
#ifndef __MY_LAYER_H__
#define __MY_LAYER_H__

#include"cocos2d.h"
class MyLayer : public cocos2d::Layer
{
public:
	MyLayer();
	~MyLayer();
	//重写init()方法
	virtual bool init();


	//通过宏函数重写create()方法
	//宏函数CREATE_FUNC()可在cocos源文件CCPlatformMacros.h中看到
	CREATE_FUNC(MyLayer);
};
#endif // __MY_LAYER_H__
3).在C++文件中实现init()方法,create()方法通过之前调用宏函数实现所以不需要我们再去实现了;
//MyLayer.h文件
#include "MyLayer.h"
using namespace cocos2d;

MyLayer::MyLayer()
{
}

MyLayer::~MyLayer()
{
}

bool MyLayer::init()
{
	//如果父类init()初始化失败
	if (!Layer::init())
	{
		return false;
	}
	return true;
}
4).在需要使用该Layer的场景上添加layer;
auto layer = MyLayer::create();
this->addChild(layer);
在我们的实际开发中这种通过继承创建layer的方法较为常见,因为在项目开发时往往是分模块进行开发的,而不同的模块通常要在不同的layer里面。






以上。


你可能感兴趣的:(继承,cocos2d-x,addchild,层layer,层级zOrder)