加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

2dx解析cocosbuilder中使用layer时的缺陷

发布时间:2020-12-14 16:34:42 所属栏目:百科 来源:网络整理
导读:2dx解析cocosbuilder中使用layer时的缺陷 cocos2d-x 3.7 cocosbuilder中的layer通常会用到触摸属性: 但是在2dx解析布局文件的时候,却很多属性都没解析: #define PROPERTY_TOUCH_ENABLED "isTouchEnabled" #define PROPERTY_ACCELEROMETER_ENABLED "isAcce

2dx解析cocosbuilder中使用layer时的缺陷

cocos2d-x 3.7

cocosbuilder中的layer通常会用到触摸属性:

但是在2dx解析布局文件的时候,却很多属性都没解析:

#define PROPERTY_TOUCH_ENABLED "isTouchEnabled"
#define PROPERTY_ACCELEROMETER_ENABLED "isAccelerometerEnabled"
#define PROPERTY_MOUSE_ENABLED "isMouseEnabled"
#define PROPERTY_KEYBOARD_ENABLED "isKeyboardEnabled"

void LayerLoader::onHandlePropTypeCheck(Node * pNode,Node * pParent,const char * pPropertyName,bool pCheck,CCBReader * ccbReader) {
    if(strcmp(pPropertyName,PROPERTY_TOUCH_ENABLED) == 0) {
        ((Layer *)pNode)->setTouchEnabled(pCheck);
    } else if(strcmp(pPropertyName,PROPERTY_ACCELEROMETER_ENABLED) == 0) {
        ((Layer *)pNode)->setAccelerometerEnabled(pCheck);
    } else if(strcmp(pPropertyName,PROPERTY_MOUSE_ENABLED) == 0) {
        // TODO: Not supported
        CCLOG("The property '%s' is not supported!",PROPERTY_MOUSE_ENABLED);
    } else if(strcmp(pPropertyName,PROPERTY_KEYBOARD_ENABLED) == 0) {
        // TODO: Not supported
        CCLOG("The property '%s' is not supported!",PROPERTY_KEYBOARD_ENABLED);
        // This comes closest: ((Layer *)pNode)->setKeypadEnabled(pCheck);
    } else {
        NodeLoader::onHandlePropTypeCheck(pNode,pParent,pPropertyName,pCheck,ccbReader);
    }
}

最常用的ONE_BY_ONE和SwallowsTouches都没有解析,这样使用cocosbuilder编辑的那些属性还有什么用呢

下面是修改后的解析函数:

#define PROPERTY_DONT_TOUCH_SWALLOW "dontTouchSwallow"
#define PROPERTY_TOUCH_ONE_BY_ONE "touchOneByOne"
#define PROPERTY_TOUCH_ENABLED "touchEnabled"
#define PROPERTY_ACCELEROMETER_ENABLED "accelerometerEnabled"
#define PROPERTY_MOUSE_ENABLED "mouseEnabled"
#define PROPERTY_KEYBOARD_ENABLED "keyboardEnabled"

void LayerLoader::onHandlePropTypeCheck(Node * pNode,PROPERTY_DONT_TOUCH_SWALLOW) == 0) {
        ((Layer *)pNode)->setSwallowsTouches(!pCheck);
    } else if(strcmp(pPropertyName,PROPERTY_TOUCH_ONE_BY_ONE) == 0) {
        ((Layer *)pNode)->setTouchMode(Touch::DispatchMode::ONE_BY_ONE);
    } else if(strcmp(pPropertyName,PROPERTY_KEYBOARD_ENABLED) == 0) {   
        ((Layer *)pNode)->setKeyboardEnabled(pCheck);
    } else {
        NodeLoader::onHandlePropTypeCheck(pNode,ccbReader);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读