zoukankan      html  css  js  c++  java
  • cocos2d-x 使用Cocostudio UI编辑器篇

    cocos2d-x版本,2.2

    cocostudio版本:1.0.2.0

    使用cocos2d-x 2.1.3没有成功,cocos2d-x 2.2版本内嵌cocostdio了,所以用2.2

    使用cocostudio新建了一个项目,名字“Ma”,里面有两个控件,一个Button,名字“Button”。一个TextView,名字“text”

    然后把导出的cocostudio项目添加到vc项目的resource中,然后是代码.h

    #ifndef __HELLOWORLD_SCENE_H__
    #define __HELLOWORLD_SCENE_H__
    
    #include "cocos2d.h"
    #include "cocos-ext.h"
    USING_NS_CC_EXT;
    class HelloWorld : public cocos2d::CCLayer
    {
    public:
        // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
        virtual bool init();  
    
        // there's no 'id' in cpp, so we recommand to return the exactly class pointer
        static cocos2d::CCScene* scene();
        
        // a selector callback
        void menuCloseCallback(CCObject* pSender);
        void touchEvent(CCObject *pSender, TouchEventType type);
        void countrytouch(CCObject*pSender,TouchEventType type);
        // implement the "static node()" method manually
        UILabel*mText;
        UILabel*mCountryLabel;
        CREATE_FUNC(HelloWorld);
    };
    
    #endif  // __HELLOWORLD_SCENE_H__


    .ccp

    #include "HelloWorldScene.h"
    
    using namespace cocos2d;
    
    CCScene* HelloWorld::scene()
    {
        CCScene * scene = NULL;
        do 
        {
            scene = CCScene::create();
            CC_BREAK_IF(! scene);
            HelloWorld *layer = HelloWorld::create();
            CC_BREAK_IF(! layer);
            scene->addChild(layer);
        } while (0);
        return scene;
    }
    bool HelloWorld::init()
    {
        bool bRet = false;
        do 
        {
            CC_BREAK_IF(! CCLayer::init());
            //创建一个画布
            UILayer* ul =UILayer::create();
            //把画布添加到场景中
            this->addChild(ul);
            //创建一个文本框
            mText=UILabel::create();
            mText->setText("text");
            mText->setFontName("");
            mText->setFontSize(32);
            mText->setAnchorPoint(ccp(0.5f, -1));
            mText->setPosition(ccp(100,100));
            ul->addWidget(mText);
            //创建一个Button按钮
            UIButton*playBtn=UIButton::create();
            playBtn->setTouchEnable(true);
            playBtn->setTag(1);
            playBtn->loadTextures("image/btn-play-normal.png","image/btn-play-selected.png","");
            playBtn->addTouchEventListener(this,toucheventselector(HelloWorld::touchEvent));
            playBtn->setPosition(ccp(50,50));
            ul->addWidget(playBtn);
    
            //调用UI编辑器编辑的按钮
            //把UI编辑的地图添加到画布中
            UIWidget*pUI=CCUIHELPER->createWidgetFromJsonFile("Ma.json");
            ul->addWidget(pUI);
            //获取UI 上Button的的控件
            UIWidget* countryBtn = UIHelper::instance()->seekWidgetByName(pUI,"Button"); 
            //dynamic_cast<UIWidget*>(pUI)
            countryBtn->addTouchEventListener(this,toucheventselector(HelloWorld::touchEvent));
            //获取UI上的Label控件
            mCountryLabel=(UILabel*)(UIHelper::instance()->seekWidgetByName(pUI,"text")); 
            bRet = true;
        } while (0);
    
        return bRet;
    }
    
    void HelloWorld::menuCloseCallback(CCObject* pSender)
    {
        CCDirector::sharedDirector()->end();
    }
    void HelloWorld::touchEvent(CCObject *pSender, TouchEventType type){
        int tag=((UIWidget*)pSender)->getTag();
        switch(tag){
        case 1:
            switch(type){
            case TOUCH_EVENT_BEGAN:
                mText->setText("1");
                break;
            case TOUCH_EVENT_MOVED:
                mText->setText("2");
                break;
            case  TOUCH_EVENT_ENDED:
                mText->setText("3");
                break;
            }
            break;
        case 8:
            switch(type){
            case TOUCH_EVENT_BEGAN:
                mCountryLabel->setText("1");
                break;
            case TOUCH_EVENT_MOVED:
                mCountryLabel->setText("2");
                break;
            case  TOUCH_EVENT_ENDED:
                mCountryLabel->setText("3");
                break;
            }
            break;
        }
    };
  • 相关阅读:
    多线程中注意事项
    多线程实现第三种方式
    线程池《一》
    线程组
    线程间通信注意的问题
    互斥锁
    多个线程通信的问题
    二个线程间的通信
    死锁产生的原理
    线程安全问题
  • 原文地址:https://www.cnblogs.com/android-qian/p/3425906.html
Copyright © 2011-2022 走看看