[已解决]如何在Cocos2dx中修改加载CocoStudio的UI内容

用CocoStudio建的自带的DemoLogin的UI, 加截到项目中之后, 修改不了其中的Text的内容, 代码用的也是示例中的代码, 不过加了一点点, 如下:

m_pUILayer = Layer::create();
m_pUILayer->scheduleUpdate();
addChild(m_pUILayer);

// register root from json
m_pLayout = dynamic_cast<Layout*>(cocostudio::GUIReader::getInstance()->widgetFromJsonFile(“DemoLogin\DemoLogin.ExportJson”));
m_pUILayer->addChild(m_pLayout);

_displayValueLabel = static_cast<Text*>(Helper::seekWidgetByName(m_pLayout, “name_TextField”));
_displayValueLabel->setText(“te”);

运行到最后一行的时候报错, 错误提示如下0x00F1CDDD 处有未经处理的异常(在 Test.exe 中): 0xC0000005: 读取位置 0x00000277 时发生访问冲突。

我的Cocos2dx是3.0正式版. Studio是1.3.0.1.

我看了cpp-test示例代码, 不是这么写的, 是直接Text::create(), 所以setText没问题, 就想问一下, 难道加载CocoStudio后, 就不能改文本框的内容吗? 如果能, 应该要怎么写呢?

经过版主大大的无私帮忙, 终于找到问题
_displayValueLabel = static_cast<Text*>(Helper::seekWidgetByName(m_pLayout, “name_TextField”));
的类型转换错误, 正确应该是static_cast<TextField*>,

说到底还是自己太新手了, 对于基础的UI没弄明白~~

没人帮回复吗?

呃…知道周一大家都很忙, 没想到一上午都没人回…

再顶一下了, 没想到一天了都没人回, 就算我问的问题弱了点, 那也说一声嘛…

看看label是不是空指针,也许name_TextField这个名字打错字了

总算有人回复了, 谢个先, label不是空的, 换成下面的代码一样报错

if(_displayValueLabel)
_displayValueLabel->setText(“te”);

名称应该没错, 在JSON文件中能找到, 是copy的~~大小写都一致…

我也遇到此问题,求大神指点

本来也不打算再顶了, 本以为是我自己方式错了, 毕竟在网上也搜不到有人问这样的问题, 没想到还有新人碰到跟我一样的问题, 就再顶最后一次吧

如果还是没人回就让它沉吧, 有150多号人看过却只有一个人问过一下, 失望了~~

感觉cocos更新换代得太乱了,妈的关键字次次都变,楼主解决了修改Text的内容了没?

没呢…头疼中…

可能是_displayValueLabel 没有加到 m_pLayout上面

— Begin quote from ____

引用第10楼cst_jkk于2014-05-22 17:32发表的 :
可能是_displayValueLabel 没有加到 m_pLayout上面 http://www.cocoachina.com/bbs/job.php?action=topost&tid=202222&pid=958545

— End quote

你好, 请问要如何加? 你也看了我的代码, 我是直接从JSON里加载的不知道还要怎么处理呀~

好像是个uilabel吧 我的版本是dynamic_cast<UILabel*>m_pLayout->getchilbyname()
你试试把<>里的改成你的ui的对应类型
我也刚学。。可能有错

m_pLayout->getchilbyname() 要价格括号 (m_pLayout->getchilbyname(“”) )

你这个好像是2.X版本的代码…但我也不确定, 你确定是3.0的代码? 记得看过, 3.0的代码类都取消了UI开头的…

这个确实不是3.0的

你好,建议不要在加载UI后直接修改UI。

— Begin quote from ____

引用第16楼hanrea于2014-05-23 09:46发表的 :
你好,建议不要在加载UI后直接修改UI。 http://www.cocoachina.com/bbs/job.php?action=topost&tid=202222&pid=958936

— End quote

这该怎么理解呢???加载完后的UI 不直接修改?要延迟修改么?跟ListView的滚动一样的额?

— Begin quote from ____

引用第16楼hanrea于2014-05-23 09:46发表的 :
你好,建议不要在加载UI后直接修改UI。 http://www.cocoachina.com/bbs/job.php?action=topost&tid=202222&pid=958936

— End quote

你好, 能否说明一下原因?

另外, 就算我把代码放到Button的监听事件中, 一样会报这样的错误, 难道button事件也不能修改UI吗? 那创建UI有什么意义?

是你代码有问题,应该是addWidget,不是addChild