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);
}
}

cocos2d-x-3.x bringToFront &amp; sendToBack实现的更多相关文章

  1. iPhone How-to:如何调整UIView的Z-Order

    转自:http://bj007.blog.51cto.com/1701577/541572 在界面设计中,最终用户看到的呈现通常是由不同层的视图组成的,通过控制视图的层次就可以实现不同的效果和功能.而 ...

  2. Z Order of Controls in Delphi VCL

    Get and set the Z Order of controls at runtime in Delphi VCL. If you are looking for a FireMonkey so ...

  3. Z Order of Controls in Delphi FireMonkey(Tom Yu的博客)

    Get and set the Z Order of controls at runtime in Delphi FireMonkey. This is a follow on to my earli ...

  4. Delphi XE2 之 FireMonkey 入门(2)

    FireMonkey 的控件都是自己绘制的(而不是基于系统组件), 我想它们应该是基于一些基本图形; 就从基本图形开始吧. FMX.Objects 单元给出的类: TShape //基本图形的基类 T ...

  5. 关于sendtoback()和bringtofront() 的理解

    如下的代码: button2.Dock = DockStyle.Top; button1.SendToBack(); button1.Dock = DockStyle.Top; button3.Doc ...

  6. 小尝试一下 cocos2d

    好奇 cocos2d 到底是怎样一个框架,正好有个项目需要一个游戏框架,所以稍微了解了一下.小结一下了解到的情况. 基本概念 首先呢,因为 cocos2d 是基于 pyglet 做的,你完全可以直接用 ...

  7. 采用cocos2d-x lua 制作数字滚动效果样例

    require "Cocos2d"require "Cocos2dConstants"local testscene = class("testsce ...

  8. Cocos2d 利用继承Draw方法制作可显示三维数据(宠物三维等)的三角形显示面板

    很久没有写博客了,这段时间比较忙,又是搬家又是做自己的项目,还有太多琐碎的事情缠身,好不容易抽出时间把最近自己做的一些简单例子记录一下. 在我的项目中,我需要一个显示面板来显示游戏中的一个三维数据,例 ...

  9. iPhone开发与cocos2d 经验谈

    转CSDN jilongliang : 首先,对于一个完全没有mac开发经验,甚至从没摸过苹果系统的开发人员来说,首先就是要熟悉apple的那一套开发框架(含开发环境IDE.开发框架uikit,还有开 ...

随机推荐

  1. python之路 --- python模块初认识&数据类型

    一.模块初识 首先,文件名不能和导入的模块名称一样.因为系统默认先从当前文件寻找模块名,如果文件名和导入的模块名称一样的话,就相当于自己调用自己,会找不到相应的方法的. sys模块 sys.path  ...

  2. Leetcode 433.最小基因变化

    最小基因变化 一条基因序列由一个带有8个字符的字符串表示,其中每个字符都属于 "A", "C", "G", "T"中的任 ...

  3. Python封装与隐藏

      今日内容: 1.封装与隐藏2.property3.绑定方法与非绑定方法 知识点一:封装与隐藏 1.什么封装:   封:属性对外是隐藏的,但对内是开放的   装:申请一个名称空间,往里装入一系列名字 ...

  4. 【bzoj3291】Alice与能源计划 模拟费用流+二分图最大匹配

    题目描述 在梦境中,Alice来到了火星.不知为何,转眼间Alice被任命为火星能源部长,并立刻面临着一个严峻的考验. 为了方便,我们可以将火星抽象成平面,并建立平面直角坐标系.火星上一共有N个居民点 ...

  5. IBM DB2 控制中心等图形工具在 Windows 下的字体设置

    原文地址(直接看原文): http://loveseaside.iteye.com/blog/648941 [简介如下] IBM DB2 在版本 8.0 以上就提供了一个跨平台的基于 Java 的一套 ...

  6. chromedriver对应的支持的Chrome版本(更新至Chrome64)

    很多网友在配置chromedriver的时候会遇到很多麻烦,在网上找了很多资料觉得这个表格不错,就给大家分享出来,希望对大家配置chrome的时候有帮助: chromedriver版本 支持的Chro ...

  7. 【CF1015C】Songs Compression(贪心)

    题意: 给定n和m,n组(a[i],b[i]),每一组a[i]可以压缩为b[i],求最少只需要压缩几个,使得m可以存下所有数据,无解输出-1 思路:按差贪心,排序 #include<cstdio ...

  8. 【CF645D】 Robot Rapping Results Report(拓扑排序,二分)

    题意:有一张N点M边的有向图,求最小的K使根据前K条边就能够确定图是否有唯一的拓扑序, 若没有唯一拓扑序输出-1 思路:二分答案再拓扑排序,以入度为0的节点作为新的一层,若某一层的节点个数<&g ...

  9. 应用express mockjs模拟前端json数据接口

    一.首先需要在项目安装express 1.cnpm install express --save-dev  2.cnpm install mockjs --save-dev 二.在项目根目录下新建pr ...

  10. XMPP协议实现原理介绍(转)

    XMPP协议简介   XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的四种IM(IM:instant messagi ...