zoukankan      html  css  js  c++  java
  • 解决cocos2dx 3.x 导入cocostudio的ui界面出现错位问题

    笔者今天发现导入cocostudio的ui界面时,会有部分控件出现错位的现象,后来我看了一下源码,发现是部分控件是没有继承

    Layout类,导致不能设置控件位置造成,原因可以看看cocos2dx 源码的CCSGUIReader.cpp文件的函数:

    Widget* WidgetPropertiesReader0300::widgetFromJsonDictionary(const rapidjson::Value& data)

    的最后一段

    if (!dynamic_cast<Layout*>(widget))
         {
                            if (child->getPositionType() == ui::Widget::PositionType::PERCENT)
                            {
                                child->setPositionPercent(Vec2(child->getPositionPercent().x + widget->getAnchorPoint().x, child->getPositionPercent().y + widget->getAnchorPoint().y));
                            }
                            child->setPosition(Vec2(child->getPositionX() + widget->getAnchorPointInPoints().x, child->getPositionY() + widget->getAnchorPointInPoints().y));
                        }
                        widget->addChild(child);

    从代码中可以看出来,控件需要继承Layout类才能实现位置的设置,而UIPanel类不继承Layout类,所以不会进行位置设置,即使cocostudio有位置设置,

    在游戏运行中也不会看到设置位置。

  • 相关阅读:
    CSP2018-09
    CSP2018-03
    CSP2017-12
    CSP2017-09
    CSP2017-03
    CSP2016-12
    [算法设计与分析] 奶酪 (并查集)
    5555
    阿超
    结对作业
  • 原文地址:https://www.cnblogs.com/HemJohn/p/5140163.html
Copyright © 2011-2022 走看看