一,Flex 层级概念
对于Flex容器来说。作为它的children(),是有一个先后顺序。根据子组件在容易的初始化先后顺序层次依次升高,类似于堆栈。先初始化的在下面。最后加进去的在最上
面。所以最后加进去的组件是不会被任何组件遮挡的。
0 ----------------最底层 不可能有比0更低的层次。-1 会报out of range错误
this.numElements-1 通常的最高层。为什么是通常的最高层。因为即使你容器只有三个组件,它的最高层还是可以达到超过3层的架构。经测试发现一般最高层是numElements+4是最高层。如果再超过也会报out of range错误。所以我个人一般做法是把this.numElements-1 作为最高层。如果超过这个数字,就手动的给它值为this.numElements-1.
对于层级管理。必须有的三个方法。
getElementIndex() 得到当前Element的index
setElementIndex() 设置当前element的index
swapElements() 交换两个element的index
我想信对于getElementIndex() 和swapElements() 这两个方法很容易理解。一个是得到当前element的层级。另外一个是交换两个element的层级。
但是setElementIndex()此方法是什么用处。我们只知道设置此element的index。但是其他element的index呢?会不会有什么改变呢 。
这里必须说明的是。setElementIndex()会影响以前的层级。比如。
0 1 2 3 4 5 6 7 8 9
如果现在你想把第4层的element set成第2层。那么第2层会往哪里走 .会和第4层的换位?事实是不会的。因为那位会是2 3层级的关系混乱。在这里Flex机制是向前推或者向后退。哪里有空位就往哪里走。所以在这里 最后会变成。2 3 层都会提高一个层级。变成 3.4 层级。
我想现在这三个方法。应该很清楚其作用。至于实现机理就不细说了。相信既然知道了意思实现起来就不是难事。
谢谢