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);
}
}
cocos2d-x-3.x bringToFront & sendToBack实现的更多相关文章
- iPhone How-to:如何调整UIView的Z-Order
转自:http://bj007.blog.51cto.com/1701577/541572 在界面设计中,最终用户看到的呈现通常是由不同层的视图组成的,通过控制视图的层次就可以实现不同的效果和功能.而 ...
- 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 ...
- 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 ...
- Delphi XE2 之 FireMonkey 入门(2)
FireMonkey 的控件都是自己绘制的(而不是基于系统组件), 我想它们应该是基于一些基本图形; 就从基本图形开始吧. FMX.Objects 单元给出的类: TShape //基本图形的基类 T ...
- 关于sendtoback()和bringtofront() 的理解
如下的代码: button2.Dock = DockStyle.Top; button1.SendToBack(); button1.Dock = DockStyle.Top; button3.Doc ...
- 小尝试一下 cocos2d
好奇 cocos2d 到底是怎样一个框架,正好有个项目需要一个游戏框架,所以稍微了解了一下.小结一下了解到的情况. 基本概念 首先呢,因为 cocos2d 是基于 pyglet 做的,你完全可以直接用 ...
- 采用cocos2d-x lua 制作数字滚动效果样例
require "Cocos2d"require "Cocos2dConstants"local testscene = class("testsce ...
- Cocos2d 利用继承Draw方法制作可显示三维数据(宠物三维等)的三角形显示面板
很久没有写博客了,这段时间比较忙,又是搬家又是做自己的项目,还有太多琐碎的事情缠身,好不容易抽出时间把最近自己做的一些简单例子记录一下. 在我的项目中,我需要一个显示面板来显示游戏中的一个三维数据,例 ...
- iPhone开发与cocos2d 经验谈
转CSDN jilongliang : 首先,对于一个完全没有mac开发经验,甚至从没摸过苹果系统的开发人员来说,首先就是要熟悉apple的那一套开发框架(含开发环境IDE.开发框架uikit,还有开 ...
随机推荐
- pycharm安装包
pycharm的纯净版本 链接: https://pan.baidu.com/s/15fLsO_GCO8uaYNQjLVdNaw 密码: ef22
- 浅析win32 Win64 x86 x64 区别 及Eclipse启动报Java was started but returned exit code=13 错误
win32.x86_64是64位 X86就是 32位系统 X64 就是64位系统 最好记得方法就是带有64的就是64位,其余都是32位 为什么要讲这个呢? 如果是绿色版本的eclipse,在打开ec ...
- MyBatis多个接口参数报错:Available parameters are [0, 1, param1, param2], 及解决方法
1. sql语句如下: SELECT * FROM tb_crm_user WHERE id = #{userId, jdbcType=INTEGER} AND user_name = #{userN ...
- [python IO学习篇] [打开包含中文路径的文件]
https://my.oschina.net/mcyang000/blog/289460 打开路径含有中文的文件时,要注意: 1 在windows对文件名编码是采用gbk等进行编码保存,所以要将文 ...
- [译]pandas中的iloc loc的区别?
loc 从特定的 gets rows (or columns) with particular labels from the index. iloc gets rows (or columns) a ...
- Spring事务支持:利用继承简化配置
因为事务代理的实现类是 TransactionProxyFactoryBean . 事务代理Bean必须注入事务管理器. 大部分情况下,每个事务代理的事务属性大同小异,对于这种情况,Spring提供了 ...
- JDBC 学习笔记(二)—— 详解 JDBC 的四种驱动类型
JDBC 有四种驱动类型,分别是: JDBC-ODBC 桥(JDBC-ODBC bridge driver plus ODBC driver) 本地 API 驱动(Native-API partly ...
- kb-07专题线段树-02--单点修改,区间最值
/* 区间单点该值,区间查询最大值: hdu-1754 */ #include<iostream> #include<cstdio> #include<cstring&g ...
- d3 使用随机数据生成条形图
).map(function(){ ,)(),); }) // 返回 [27.2, 12.9, 12.2, 6.8, 9.4, 7.1, 17.5, 30, 16.6, 24.3, 19, 16.6, ...
- win7中如何恢复UltraEdit的默认配置
自己win7上安装的UltraEdit 17.10.0.1015.由于编码格式不知道什么时候被改乱了,导致UE编写的java程序出现如下两种编译错误: D:\jcode>javac testco ...