创建
1、新建类文件。注意目录为Classes下,否则文件不能正常找到。
2、修改预编译头。如用VS,默认为#pragma once,为了兼容,改为#ifndef | #define | #endif
3、添加cocos2d.h头文件
4、继承cocos2d::Layer,默认为private继承,通常需要改为public继承。
5、添加init()和CREATE_FUNC()
6、实现init()
7、添加createScene(),可选
最基本的代码:
//GameLayer.h
#ifndef _GAMELAYER_H
#define _GAMELAYER_H
#include "cocos2d.h"
class GameLayer : public cocos2d::Layer
{
public:
GameLayer();
~GameLayer();
public:
virtual bool init();
CREATE_FUNC(GameLayer);
public:
static cocos2d::Scene* createScene();
};
#endif // _GAMELAYER_H
// GameLayer.cpp
#include "GameLayer.h"
USING_NS_CC;
// 构造函数,如有对象成员,需要在此初始化
GameLayer::GameLayer()
{}
// 析构
GameLayer::~GameLayer()
{}
//虚函数,初始化,当执行本类的create()函数时会被自动调用
bool GameLayer::init()
{
bool bl = Layer::init();
// 加入内容
return bl;
}
// Scene的入口,通过该函数进入Layer
Scene* GameLayer::createScene()
{
auto scene = Scene::create();
auto layer = GameLayer::create();
scene->addChild(layer);
return scene;
}
进入
// 直接进入
auto layer = GameLayer::createScene();
Director::getInstance()->replaceScene(layer);
// 特效进入
auto layer = GameLayer::createScene();
auto slidein = TransitionSlideInL::create(1.0f, layer);
Director::getInstance()->replaceScene(slidein);
// 进入特效完之后才发生
//声明虚函数
virtual void onEnterTransitionDidFinish();
添加定时器
// GameLayer.h
private:
// 声明
void gameStep(float dt);
// GamaLayer.cpp
// 实现
void GameLayer::gameStep(float dt)
{
//bg->move();
}
void GameLayer::startGame()
{
// 调用
this->schedule(SEL_SCHEDULE(&GameLayer::gameStep), 0.02f);
}