关于cocos Studio for mac中ListView加载

本文详细介绍了在Mac版本的CocosStudio中使用ListView组件遇到的问题及解决方法。包括不同版本编辑器间的差异,如何正确加载UI资源,以及如何在ListView中添加布局对象等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天试了一下cocos Studio for mac版本的编辑器中的ListView。但发现之前在windows上可以使用的方法在使用这个mac版本的cocos Studio之后不能加载,经过这一下午的研究,发现主要问题是for mac版本编辑器的根视图和for windowns的根视图不一样,一个是Node对象,一个是Layout对象。下边只说这个for mac版本中的问题。
1.加载使用UI编辑器编辑好的UI,我使用的是cocos2d-x 3.2版本。for mac是使用的1.0.0版本的。
编辑好之后,导出,在Export文件夹下有你编辑的UI项目,在那里可以找到.json的文件
关于cocos Studio for mac中ListView加载 - ♂苹果 - 眼睛想旅行
这几个json就是你要在cocos2d-x中加载的资源。
实际上,for mac版本的cocos studio编辑器的根视图是Node,见下图。这个和windows系统上是不一样的。
关于cocos Studio for mac中ListView加载 - ♂苹果 - 眼睛想旅行
单单只是这点区别,就难到了很多同学。也是因为这一点不一样,所以使用的加载方法也不一样。
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"));

    lv->addChild(out->clone());

经过这一翻折腾,总算是问题解决了。今天遇到这一堆的问题,又开始让我有怀念起苹果的TableView了。虽然这个用起来没有cocos2d-x新出的这个ListView编辑器方便,但显示速度快,不会卡顿,并且使用方法从来都没有改变过,所有的api也始终如一。其实有的时候新工具不一定就能增加工作效率,大部分的时间都用在了学习新工具上了。那就没有时间来作产品设计了。如果其他人愿意,我宁愿用回cocos2d-x 2.1.5这个版本,或者使用cocos2d-iphone的Objective-C的原始版本,不使用任何UI编辑器,一切都用代码来写。但有时候作事情不由自已,谁让咱是给别人打工的码农呢。

下边是,加载正常的ListView.有了这个之后,我们对ListView中的各个控件操作起来也会方便很多。

关于cocos Studio for mac中ListView加载 - ♂苹果 - 眼睛想旅行

 害死人的编辑器。一个工具还没有开始上手,新的东西又出来了,使用方法还完全不一样。如果我是老板,我宁愿自已打造自已的编辑器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值