如何在cocos2dx里添加顶层layer
所谓顶层layer,是指不会因为scene的切换而切换掉的层!
void setTopLayer(CCLayer *layer);
voidCCDirector::setTopLayer(CCLayer *layer)
{
m_pTopLayer = layer;
// draw the top layer
if (m_pTopLayer) {
m_pTopLayer->visit();
#ifndef __HeroLegend__WindyTopLayer__
#define __HeroLegend__WindyTopLayer__
#include "cocos2d.h"
class WindyTopLayer : publiccocos2d::CCLayer
{
/// @{
/// @name constructors
public:
CREATE_FUNC(WindyTopLayer);
WindyTopLayer();
virtual ~WindyTopLayer();
staticWindyTopLayer *getInstace();
/// @} end constructors
/// @{
/// @name methods
public:
bool init();
void addNode(cocos2d::CCNode* node);
void showUI();
void removeUI();
/// @} end methods
};
#include "WindyTopLayer.h"
USING_NS_CC;
staticWindyTopLayer* m_topLayer = NULL;
WindyTopLayer::WindyTopLayer()
{
}
WindyTopLayer::~WindyTopLayer()
{
}
WindyTopLayer *WindyTopLayer::getInstace()
{
if (m_topLayer == NULL) {
m_topLayer = WindyTopLayer::create();
m_topLayer->retain();
}
returnm_topLayer;
}
boolWindyTopLayer::init()
{
if (!CCLayer::init()) {
returnfalse;
}
returntrue;
}
voidWindyTopLayer::addNode(cocos2d::CCNode* node)
{
addChild(node);
showUI();
}
voidWindyTopLayer::showUI()
{
if (m_topLayer) {
m_topLayer->onEnter();
CCDirector::sharedDirector()->setTopLayer(m_topLayer);
}
}
voidWindyTopLayer::removeUI()
{
m_topLayer->removeAllChildren();
m_topLayer->onExit();
CCDirector::sharedDirector()->setTopLayer(NULL);
m_topLayer->removeFromParent();