【cocosStudio】查看官方示例--调用cocoStudio控件

来源:互联网 发布:seo整站优化方案 编辑:程序博客网 时间:2024/06/06 03:23

理解:

  • 将cocoStudio的ui控件转换成cocos的GUI控件来操作
  • 通过widgetFromJsonFile()加载根容器Plane控件
  • 通过Helper::seekWidgetByTag()寻找子控件

打开官方示例:

  • 打开CMD
  • CD到D:\cocos2d-x-3.3rc0\tests\cpp-tests\
  • 执行cocos run -p win32命令



将class下所有的文件全部放到Sublime Text 3中:

  • 查找文件CTRL+P:CocoStudio.h
  • 发现底下有个#include "cocostudio/CCSGUIReader.h"
  • 接着查找CCSGUIReader.h



导入头文件调用:(注意命名空间和强制类型转换类型)

  • 将Json文件中的控件,转换成cocos2dx里面的ui控件来操作
  • #include "cocostudio\CocoStudio.h"
  • #include "ui\UIButton.h"
  • using namespace cocostudio;
  • using namespace ui;
注意类型转换的类型必须一一对应,比如TextField就是TextField,不能转换为TextFieldTTF:

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #include "HelloWorldScene.h"  
  2.   
  3. /* cocoStudio导出的Json文件 */  
  4. #define JSON "DemoLogin.json"  
  5. #define BTN_TAG 14  
  6. #define EDIT_TEXT_NAME 8  
  7.   
  8. /* 设置命名空间 */  
  9. USING_NS_CC;  
  10. using namespace cocostudio;  
  11. using namespace ui;  
  12. using namespace std;  
  13.   
  14. Scene* HelloWorld::createScene()  
  15. {  
  16.     auto scene = Scene::create();    
  17.     auto layer = HelloWorld::create();  
  18.     scene->addChild(layer);  
  19.     return scene;  
  20. }  
  21.   
  22. bool HelloWorld::init()  
  23. {  
  24.     if ( !Layer::init() )  
  25.     {  
  26.         return false;  
  27.     }  
  28.   
  29.     /* 加载cocoStudio界面 */  
  30.     auto uiScene = GUIReader::getInstance()->widgetFromJsonFile(JSON);  
  31.     addChild(uiScene);  
  32.   
  33.   
  34.     /* 找到cocoStudio的控件,装换成coocs的gui控件(Helper须加载CocosGUI.h) */  
  35.     /* 按钮 */  
  36.     Button *btn = (Button*)(Helper::seekWidgetByTag(uiScene,BTN_TAG));  
  37.     /* 设置按钮点击事件(注意转换类型的对应) */  
  38.     btn->addTouchEventListener( this, toucheventselector(HelloWorld::touchEvent));  
  39.   
  40.     /* 输入框(注意转换类型的对应,不是TextFieldTTF) */  
  41.     editText = (TextField*)(Helper::seekWidgetByTag(uiScene,EDIT_TEXT_NAME));  
  42.   
  43.     return true;  
  44. }  
  45.   
  46. /* 设置按钮点击事件  */  
  47. void HelloWorld::touchEvent(Ref *pSender, TouchEventType type){  
  48.       
  49.     switch (type)    
  50.     {    
  51.         case TOUCH_EVENT_BEGAN:    
  52.             CCLOG( "Began" );  
  53.             break;    
  54.                  
  55.         case TOUCH_EVENT_MOVED:    
  56.             break;    
  57.                  
  58.         case TOUCH_EVENT_ENDED:  
  59.             /* 输出输入框的内容 */  
  60.             CCLOG( editText->getString().c_str() );  
  61.             break;    
  62.   
  63.         case TOUCH_EVENT_CANCELED:    
  64.             break;    
  65.                  
  66.         default:    
  67.             break;    
  68.     }    
  69.   
  70. }  




FROM: http://blog.csdn.net/ns2250225/article/details/41961219



给cocos中添加响应事件的例子:

              #include "ui/CocosGUI.h"

              //获取屏幕大小
     Size visibleSize = Director::getInstance()->getVisibleSize();

    autowidget = Widget::create();
    widget->setContentSize(Size(100,100));
    widget->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
    widget->setTouchEnabled(true);
    this->addChild(widget);
    widget->addTouchEventListener([](Ref *pSender, Widget::TouchEventType type){
        switch(type)
        {
            caseWidget::TouchEventType::BEGAN:
                CCLOG("BEGAN");
                break;
                 
            caseWidget::TouchEventType::MOVED:
                CCLOG("MOVED");
                break;
                 
            caseWidget::TouchEventType::ENDED:
                CCLOG("ENDED");
                break;
                 
            caseWidget::TouchEventType::CANCELED:
                CCLOG("CANCELED");
                break;
                 
            default:
                break;
        }
    });

from:http://www.cocoachina.com/bbs/read.php?tid-289092.html

0 0
原创粉丝点击