zoukankan      html  css  js  c++  java
  • cocos2d-x-3.x bringToFront & sendToBack实现

    void Node::bringToFront(void)
    {
        auto parent = this->getParent();
        if (parent != nullptr && parent->getChildrenCount() >= 2) {
    
            auto& siblings = parent->getChildren();
    
            auto last = *siblings.rbegin();
            auto topOrderOfArrival = last->getOrderOfArrival();
            auto topLocalZOrder = last->getLocalZOrder();
    
            for (size_t idx = siblings.size() - 1; idx > 0; --idx)
            {
                auto sibling = siblings.at(idx);
                if (sibling != this) {
                    sibling->setOrderOfArrival(siblings.at(idx - 1)->getOrderOfArrival());
                    sibling->_setLocalZOrder(siblings.at(idx - 1)->getLocalZOrder());
                }
                else {
                    break;
                }
            }
    
            this->setOrderOfArrival(topOrderOfArrival);
            this->_setLocalZOrder(topLocalZOrder);
    
            std::sort(std::begin(siblings), std::end(siblings), nodeComparisonLess);
            _eventDispatcher->setDirtyForNode(this);
        }
    }
    
    void Node::sendToBack(void)
    {
        auto parent = this->getParent();
        if (parent != nullptr && parent->getChildrenCount() >= 2) {
    
            auto& siblings = parent->getChildren();
            auto start = *siblings.begin();
            auto bottomOrderOfArrival = start->getOrderOfArrival();
            auto bottomLocalZOrder = start->getLocalZOrder();
            
            for (size_t idx = 0; idx < siblings.size() - 1; ++idx)
            {
                auto c = siblings.at(idx);
                if (c != this) {
                    c->setOrderOfArrival(siblings.at(idx + 1)->getOrderOfArrival());
                    c->_setLocalZOrder(siblings.at(idx + 1)->getLocalZOrder());
                }
                else {
                    break;
                }
            }
    
            this->setOrderOfArrival(bottomOrderOfArrival);
            this->_setLocalZOrder(bottomLocalZOrder);
    
            std::sort(std::begin(siblings), std::end(siblings), nodeComparisonLess);
            _eventDispatcher->setDirtyForNode(this);
        }
    }

  • 相关阅读:
    Beta阶段DAY1
    Beta阶段DAY2
    Beta阶段冲刺前准备
    Beta阶段Scrum 冲刺博客合集
    alpha阶段项目复审
    网络15软工个人作业5——软件工程总结
    软工网络15个人作业4——alpha阶段个人总结
    软件工程网络15个人作业3 (201521123051 谢庆圆)
    软件工程网络15专业结对编程
    软工网络15个人阅读作业2 (201521123051 谢庆圆)
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7217651.html
Copyright © 2011-2022 走看看