(原创)cocos2d-x 3.0 示例代码分析5:testBasic

今天我们看下示例里面的场景基类~~直接上代码

// testBasic.h
// 场景基类

#ifndef _TEST_BASIC_H_
#define _TEST_BASIC_H_

#include "cocos2d.h"
#include "VisibleRect.h"

USING_NS_CC;

class TestScene : public Scene  // 继承scene
{
public: 
    // 构造函数
    TestScene(bool bPortrait = false, bool physics = false);
    virtual void onEnter() override;  // 重载:onEnter

    virtual void runThisTest() = 0;  // 纯虚函数,用于运行场景
};

// C++ 11
// 定义两个宏
// CL:调用create方法创建对象并返回
// CLN:通过new方法创建对象并返回
#define CL(__className__) [](){ return __className__::create();}
#define CLN(__className__) [](){ auto obj = new __className__(); obj->autorelease(); return obj; }

#endif
// testBasic.cpp
// 星月倾心贡献~~~~

#include "testBasic.h"
#include "controller.h"
#include "extensions/cocos-ext.h"
#include "cocostudio/CocoStudio.h"

TestScene::TestScene(bool bPortrait, bool physics/* = false*/)
{ 
    // 构造函数中调用父类scene的init()方法
    if (physics)
    {
#if CC_USE_PHYSICS
        TestScene::initWithPhysics();
#else
        Scene::init();
#endif
    }
    else
    {
        Scene::init();
    }
}

// 按钮标签的回调
void testScene_callback(Ref *sender )
{
    auto scene = Scene::create();  // 创建一个场景

    auto layer = new TestController();  // 创建控制层
    scene->addChild(layer);  // 将层加入到场景中
    layer->release();  // 因为是new的,所以需要手动释放

    Director::getInstance()->replaceScene(scene);  // 替换场景

    cocostudio::ArmatureDataManager::destroyInstance();  // 销毁cocostudio的armature的实例
}

// 进入场景
void TestScene::onEnter()
{
    Scene::onEnter();  // 调用父类方法

    //add the menu item for back to main menu
    TTFConfig ttfConfig("fonts/arial.ttf", 20);  // 设置字体和大小
    auto label = Label::createWithTTF(ttfConfig,"MainMenu");  // 创建一个标签

    auto menuItem = MenuItemLabel::create(label, testScene_callback );  // 创建一个按钮标签
    auto menu = Menu::create(menuItem, NULL);

    menu->setPosition( Point::ZERO );
    menuItem->setPosition( Point( VisibleRect::right().x - 50, VisibleRect::bottom().y + 25) );

    addChild(menu, 1);
}

基类的场景还是很简单的,这里就不说了~
祝大家工作顺利,事业有成了,哈哈~~(小白:我喜欢~~)

 

作者使用 cocos2d-x 3.0 示例代码分析,未经作者允许,请勿转载!在此谢谢各位手下留情~~~

本文没有获得作者本人同意,不得转载,否则必追究相关责任。转载请注明出处!!~~

原文地址:http://www.cnblogs.com/wodehao0808/p/4094829.html  

posted @ 2014-11-13 14:09  星月相随  阅读(204)  评论(0编辑  收藏  举报