创建
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的入口,通过该函数进入LayerScene* 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.hprivate: // 声明 void gameStep(float dt);
// GamaLayer.cpp// 实现void GameLayer::gameStep(float dt){ //bg->move();}void GameLayer::startGame(){ // 调用 this->schedule(SEL_SCHEDULE(&GameLayer::gameStep), 0.02f);}