/// <summary>
///
/// </summary>
/// <param name="folderNode"></param>
/// <param name="index"></param>
/// <returns></returns>
int CheckChildren(GTreeNode folderNode, int index)
{
childrenRenderOrder = ChildrenRenderOrder.Descent;
var fromIndex = index + 1;
int cnt = folderNode.numChildren;
for (int i = 0; i < cnt; i++)
{
index++;
GTreeNode node = folderNode.GetChildAt(i);
if (node.cell == null)
CreateCell(node);
if (node.cell.parent == null)
AddChildAt(node.cell, index);
if (node.isFolder && node.expanded)
index = CheckChildren(node, index);
}
EnsureBoundsCorrect();
for (var i = fromIndex; i < numChildren; ++i)
{
var item = GetChildAt(i);
var oldY = item.y;
item.y = oldY - item.height;
item.TweenMoveY(oldY, 0.3f);
}
return index;
}
void RemoveChildrenAfterHide(object _folderNode)
{
GTreeNode folderNode = _folderNode as GTreeNode;
int cnt = folderNode.numChildren;
for (int i = 0; i < cnt; i++)
{
GTreeNode node = folderNode.GetChildAt(i);
if (node.cell != null && node.cell.parent != null)
RemoveChild(node.cell);
}
}
var distance = 0f;
for (int i = 0; i < cnt; i++)
{
GTreeNode node = folderNode.GetChildAt(i);
if (node.cell != null && node.cell.parent != null)
distance += node.cell.height;
if (node.isFolder && node.expanded)
HideFolderNode(node);
}
var firstItem = folderNode.GetChildAt(0).cell;
var fromIndex = GetChildIndex(firstItem);
for (var i = fromIndex; i < numChildren; ++i)
{
var item = GetChildAt(i);
item.TweenMoveY(item.y - distance, 0.3f);
}
2 个回复
谷主
赞同来自:
zhendery
赞同来自:
仅提供一个实现思路,别直接copy然后跟我说不能用啊或者报错啊。
只测试了两级Tree,多级的没测过;快速点击会报错,处理方法也很简单我就不说了。具体怎么实现以及优化,你可以自己思考一下。
当然如果真的有严重问题你可以告诉我。