New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
插入结点时对CascadeColor和cascadeOpacity的优化 #640
Conversation
假设一种情况,child 原来在节点树的另一个节点下,原来的父节点 parentA 的 opacity 为 128,child 受其影响 displayColor 为半透明。此时将 child 从节点树移除,添加到另一个父节点 parentB 下,而 parentB 的 opacity 为 255。此时 updateCascadeOpacity 还是需要调用的,用来更新到正确的透明度。 |
@pandamicro @colinsusie 优化的是只需要对新插入的节点调用相关update方法,不需要对其他原本的子节点update。 |
@colinsusie 小于255的判断应该去掉 |
这个新插入的节点也可能是从节点树上取下来的吧? p.s. 你们一个团队? |
@pandamicro 不是一个团队,我是上来打酱油的,O(∩_∩)O哈哈~
|
这种酱油可以多打一打 哈哈 不过我还是没看懂你的说法,你发的这段不带 255 判断的代码,就是原始代码啊 |
路过,问一下:可否在node构造的时候加一个标记是否为新node的flag,初始为true,addChild之后设为false。这样如果子节点的flag为true,且父节点的颜色或透明度为255,就不用update子节点了。因为大多数情况下都是addChild一个新节点且父节点都是255。 |
@pandamicro 原始代码没有child-> |
@pandamicro 判断255这个确实是没预料到从另一个父结点摘下的情况,后面的修改是增加了child->,而原来是直接调用自己的。你对比一下原来的代码 |
@pandamicro 我删除对255的判断了,确实有点激进,你再看看。这次的修改只增加child-> 因为对parent的其他child确实是没必要去更新的, 这个修改之后,增加1000个child,可以减少一倍的时间。 |
嗯嗯,我现在理解了,谢谢各位~ @colinsusie 麻烦用 rebase 把你的 commit 信息修改为英文,谢谢 |
@pandamicro 不大会用GIT的,整了半天没搞通,要不下次用,或者你们能帮改一下,或者你们自己用改一下代码也可以,抱歉。 |
我下午帮你搞一下 |
提交了一个新的 PR,等 1.5 小版本时更新 |
@WenhaiLin 分析的很对,赞! |
主要优化两个地点: