zoukankan      html  css  js  c++  java
  • Cocos2d-x3.2 LayerMultiplex使用说明

    LayerMultiplex是层的控制器类

    使用例如以下

    LayerMultiplexTest.h

    //
    //  LayerMultiplexTest.h
    //  cpp4
    //
    //  Created by 杜甲 on 10/13/14.
    //
    //
    
    #ifndef __cpp4__LayerMultiplexTest__
    #define __cpp4__LayerMultiplexTest__
    
    #include "cocos2d.h"
    
    USING_NS_CC;
    
    class LayerMultiplexTest : public Layer
    {
    public:
        
        virtual bool init();
        
        // there's no 'id' in cpp, so we recommend returning the class instance pointer
        static cocos2d::Scene* scene();
        
        
        
        // implement the "static node()" method manually
        CREATE_FUNC(LayerMultiplexTest);
        
    };
    
    
    class TestMainLayer : public LayerColor
    {
        
    public:
        virtual bool init();
        CREATE_FUNC(TestMainLayer);
        
    private:
        void menuCallback1(cocos2d::Ref *sender);
        void menuCallback2(cocos2d::Ref *sender);
    
    };
    
    class TestLayer1 : public LayerColor
    {
        
    public:
        virtual bool init();
        CREATE_FUNC(TestLayer1);
        void menuCallback1(cocos2d::Ref *sender);
    };
    
    class TestLayer2 : public LayerColor
    {
        
    public:
        virtual bool init();
        CREATE_FUNC(TestLayer2);
        void menuCallback1(cocos2d::Ref *sender);
    };
    
    
    
    
    
    
    
    #endif /* defined(__cpp4__LayerMultiplexTest__) */
    

    LayerMultiplexTest.cpp


    //
    //  LayerMultiplexTest.cpp
    //  cpp4
    //
    //  Created by 杜甲 on 10/13/14.
    //
    //
    
    #include "LayerMultiplexTest.h"
    
    Scene* LayerMultiplexTest::scene()
    {
        // 'scene' is an autorelease object
        auto scene = Scene::create();
        
        // 'layer' is an autorelease object
        LayerMultiplexTest *layer = LayerMultiplexTest::create();
        
        // add layer as a child to scene
        scene->addChild(layer);
        
        // return the scene
        return scene;
    }
    
    bool LayerMultiplexTest::init()
    {
        bool bRet = false;
        do {
            CC_BREAK_IF(!Layer::init());
            
            
            auto mainLayer = TestMainLayer::create();
            auto layer1 = TestLayer1::create();
            auto layer2 = TestLayer2::create();
            //将层放入LayerMultiplex中
            auto layerMutiplex = LayerMultiplex::create(mainLayer,layer1,layer2,nullptr);
            addChild(layerMutiplex,0);
            
            
            bRet = true;
        } while (0);
        return bRet;
    }
    
    bool TestMainLayer::init()
    {
        bool bRet = false;
        do {
            CC_BREAK_IF(!LayerColor::init());
            auto winSize = Director::getInstance()->getWinSize();
            
            auto label1 = Label::createWithBMFont("bitmapFontTest3.fnt", "TestLayer 1");
            auto item1 = MenuItemLabel::create(label1, CC_CALLBACK_1(TestMainLayer::menuCallback1, this));
            
            auto label2 = Label::createWithBMFont("bitmapFontTest3.fnt", "TestLayer 2");
            auto item2 = MenuItemLabel::create(label2, CC_CALLBACK_1(TestMainLayer::menuCallback2, this));
            
            auto menu = Menu::create(item1,item2, NULL);
            menu->alignItemsVertically();
            menu->setPosition(winSize / 2);
            addChild(menu);
            
            
            bRet = true;
        } while (0);
        return bRet;
    }
    
    void TestMainLayer::menuCallback1(cocos2d::Ref *sender)
    {
        static_cast<LayerMultiplex *>(_parent)->switchTo(1);
        
    }
    
    void TestMainLayer::menuCallback2(cocos2d::Ref *sender)
    {
        static_cast<LayerMultiplex *>(_parent)->switchTo(2);
    }
    
    
    
    
    bool TestLayer1::init()
    {
        bool bRet = false;
        do {
            CC_BREAK_IF(!LayerColor::initWithColor(Color4B(100, 200, 200, 100)));
            auto winSize = Director::getInstance()->getWinSize();
            auto label1 = Label::createWithBMFont("bitmapFontTest3.fnt", "MainLayer");
            auto item1 = MenuItemLabel::create(label1, CC_CALLBACK_1(TestLayer1::menuCallback1, this));
            auto menu = Menu::create(item1, NULL);
            menu->alignItemsVertically();
            menu->setPosition(winSize / 2);
            addChild(menu);
            
            
            bRet = true;
        } while (0);
        return bRet;
    }
    void TestLayer1::menuCallback1(cocos2d::Ref *sender)
    {
        //返回  方法
        static_cast<LayerMultiplex *>(_parent)->switchTo(0);
        
    }
    
    bool TestLayer2::init()
    {
        bool bRet = false;
        do {
            CC_BREAK_IF(!LayerColor::initWithColor(Color4B(100, 100, 200, 100)));
          auto winSize = Director::getInstance()->getWinSize();
            auto label1 = Label::createWithBMFont("bitmapFontTest3.fnt", "MainLayer");
            auto item1 = MenuItemLabel::create(label1, CC_CALLBACK_1(TestLayer2::menuCallback1, this));
            
            
            auto menu = Menu::create(item1, NULL);
            menu->alignItemsVertically();
            menu->setPosition(winSize / 2);
            addChild(menu);
            
            bRet = true;
        } while (0);
        return bRet;
    }
    
    void TestLayer2::menuCallback1(cocos2d::Ref *sender)
    {
        static_cast<LayerMultiplex *>(_parent)->switchTo(0);
        
    }
    
    
    
    

    代码下载:http://download.csdn.net/detail/qqmcy/8031733

  • 相关阅读:
    android细节之禁用activity的系统的默认切换效果
    Spark1.0.0 属性配置
    Memory & MyISAM 引擎小注意! | OurMySQL
    memcached vs MySQL Memory engine table 速度比较_XMPP Jabber即时通讯开发实践_百度空间
    Mysql 官方Memcached 插件初步试用感受
    Aerospike | Aerospike Chinese
    MySQL内存表的特性与使用介绍 -- 简明现代魔法
    memory引擎的索引失效一例
    MySQL内存表(MEMORY)说明 | 一个PHP程序员的备忘录
    MySQL Memory 存储引擎浅析
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6745317.html
Copyright © 2011-2022 走看看