【通知】Cocos2dx 3.0正式版本UI解析错乱解决方案

各位小伙伴,发这个帖子感觉十分抱歉~~
:5: 面壁中…

最新版本Cocos2d-x 本想给大家带来完美的体验,但由于测试的准备仍不够充分,导致了部分UI在游戏中的显示和编辑器里不一致。

问题详情:

今天经过几位用户提供的示例工程发现,如果Ui界面含有父节点与子节点的锚点设置不一致,则会在解析时出现显示错位的问题。
编辑器中的样子


3.0版本显示的效果:

可以看到,子节点的位置明显偏移。

经过查验,这个问题是由于Cocos2d-x3.0版本和Cocos2d-x2.2.x版本底层差异过大,但解析方面未做到足够的兼容性导致的。

目前我们的工程师已经紧急修复了该问题,并将代码临时提交到了:
https://github.com/cocos2d/cocos2d-x/pull/6627/files

主要修改了一下两行:
文件CCSGUIReader.cpp
百分比模式下:1116行
child->setPositionPercent(Point(child->getPositionPercent().x + widget->getAnchorPoint().x, child->getPositionPercent().y + widget->getAnchorPoint().y));
正常模式下:1118行
child->setPosition(Point(child->getPositionX() + widget->getAnchorPointInPoints().x, child->getPositionY() + widget->getAnchorPointInPoints().y));

这里主要是添加了父节点的偏移量,如果大家使用GUIReader读取json文件修改以上方法就可以解决界面错误的问题。
如果大家需要使用代码设置坐标,您可能需要参考上面的方法修改坐标设置方法。

感谢大家对CocoStudio的支持,同时也十分感谢本次向我们提供示例工程的童鞋们~~大家如果有任何意见或建议也欢迎向我们反馈。CocoStudio因为有您而更完美。:7:

没人顶一下吗,有问题赶快来看。

:14: :14:

— Begin quote from ____

引用楼主hanrea于2014-04-28 15:35发表的 【通知】Cocos2dx 3.0正式版本UI解析错乱解决方案 :
各位小伙伴,发这个帖子感觉十分抱歉~~
:5: 面壁中…

最新版本Cocos2d-x 本想给大家带来完美的体验,但由于测试的准备仍不够充分,导致了部分UI在游戏中的显示和编辑器里不一致。

http://www.cocoachina.com/bbs/job.php?action=topost&tid=199751&pid=tpc

— End quote

赞一个!有问题不可怕,关键是遇到问题能够以最快的速度给予解决!

不能更赞不能更赞不能更赞不能更赞

改了也不管用

ui动画里面的坐标没有转换。。。。。。。。

void ActionNode::initWithDictionary(const rapidjson::Value& dic, Ref* root)
{
。。。

        Node* rootNode = dynamic_cast<Node*>(root);
        if (rootNode != nullptr)
        {
            Widget* rootWidget = dynamic_cast<Widget*>(root);
            if (rootWidget != nullptr)
            {
                Widget* widget = Helper::seekActionWidgetByActionTag(rootWidget, getActionTag());
                Point tt = widget->getParent()->getAnchorPointInPoints();
                actionFrame->setPosition(Point(positionX+tt.x, positionY+tt.y));
            }else{
                actionFrame->setPosition(Point(positionX, positionY));
            }
        }else{
            actionFrame->setPosition(Point(positionX, positionY));
        }
        
      。。。

}

改一下这个代码UI动画里面坐标不会偏移了

什么时候去官网下载 就能下到最新的代码? 自己的项目中 widget的addChild也出现了错位的问题

是不是可以解决我的那个问题了。

http://www.cocoachina.com/bbs/read.php?tid=199620http://www.cocoachina.com/bbs/read.php?tid=199620

赞一个 求mac版:14:

在编辑器里设置相对位置。 可以节省很多代码 。。。

GIT提交的代码为啥是:

child->setPositionPercent(Vector2(child->getPositionPercent().x + widget->getAnchorPoint().x, child->getPositionPercent().y + widget->getAnchorPoint().y));

Vector2而不是Point呢?

而且我参考修改过后,运行 https://github.com/chukong/CocoStudioSamplesBasedOnCocos2d-x3.0 中的 DemoBag 例子仍然是错位的。

你好,我们这个修正是针对性的修正,如果您的错误使用上面的方法不能修改则有可能是你遇到了新的问题,如果您不能正确修复,欢迎将问题项目发送给我们,我们将尽快查找错误的原因。

:2:版主大大的顶顶顶,哈哈看见我们程序员很苦恼呢,太久没逛来看看版主大大

照着改了,确实还是不行。我是用cocostudio1.2生成的ui界面,用cocos2d-x3.0加载的确还是乱的。我在界面中设置了很多界面元素的锚点

:14::14::14:

额,你的问题我一直没有重现额。是否针对你的问题我也不清楚了。

请使用1.3.0.0或者1.4.0.0版本

版主,我最近也在做背包的demo 运行bagDemo 的例子 也遇到错位,不知道怎么解决啊