本篇内容介绍了“cocos Studio for mac中ListView加载问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
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加载问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。