cocos Studio for mac中ListView加载问题怎么解决

2023-06-25,

本篇内容介绍了“cocos Studio for macListView加载问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.加载使用UI编辑器编辑好的UI,我使用的是cocos2d-x 3.2版本。for mac是使用的1.0.0版本的。

编辑好之后,导出,在Export文件夹下有你编辑的UI项目,在那里可以找到.json的文件

这几个json就是你要在cocos2d-x中加载的资源。

实际上,for mac版本的cocos studio编辑器的根视图是Node,见下图。这个和windows系统上是不一样的。

单单只是这点区别,就难到了很多同学。也是因为这一点不一样,所以使用的加载方法也不一样。  

windows下的编辑器使用下边的方法加载UI资源:(因为我的xcode文字背景色设置是黑色,所以下边的颜色可以看起来不清楚,大家讲究着看吧。)

auto myLayout = dynamic_cast<Layout*>(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("CJDHMainUI_1/CJDHMainUI_1.json"));
 
auto gamestartBtn = dynamic_cast<Button*>(Helper::seekWidgetByName((Widget*)rootNode,"gameStart_Button"));

而在mac系统下的cocos studio使用下边的加载方法加载资源:

Node* rootNode =cocostudio::timeline::NodeReader::getInstance()->createNode("CJDHMainUI/CJDHGameUI.json");
this->addChild(rootNode,0);
    
auto homeBtn = dynamic_cast<Button*>(rootNode->getChildByName("Button_home"));
 
    homeBtn->addTouchEventListener(CC_CALLBACK_2(GameSelectLayer::touchEvent, this));

这里很明显可以看出来,一个是Layout对象,一个是Node对象。

     在使用ListView时也有一些不一样。因为ListView只能添加Layout对象,不能添加Node的非Widget对象。所以,使用mac下的编辑器的时候,一定要从Node这个对象下边取出Layout对象加进ListView才行。今天研究半天了,总算是把这个搞明白了。

比如,我在使用一个新的画布编辑了一个ListView的Cell子项,当你想使用Widget的clone()时发现会报错。一直没有搞懂,直到最后豁然开朗了。请看下边加载的方法。

ListView* lv = dynamic_cast<ListView*>(rootNode->getChildByName("ListView_main"));
    lv->setDirection(ui::ScrollView::Direction::VERTICAL);
 
    lv->setBounceEnabled(true);
//这个方法得到的是Node并不是Layout所以不能使用clone.
    Node* wid = cocostudio::timeline::NodeReader::getInstance()->createNode("CJDHMainUI/CCJDHTableCellUI.json");
    //从Node中取出Layout对象,这个时候才可以使用clone
    Layout* out = dynamic_cast<Layout*>(wid->getChildByName("Panel"));
 
addChild(out->clone());

“cocos Studio for mac中ListView加载问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注本站网站,小编将为大家输出更多高质量的实用文章!