Ok Fredd, lo intentaré aunke es algo engorroso, lo importante para mí era la idea...

no el como exacto

He tenido que ampliar la información que guardaba por nodo en la clase arbol, para poder saber en ke NIVEL lógico se encontraba un nodo, y su padre, etc.. pero obviando esto.. me centro en el .fla de representación que es donde fallaba.
en el main tenía esto +/-
Código :
//Código de carga en el arbol desde la BD------------------
cat.loadBranch(padre);
cat.onLoadBranch = function(res)
{
var rst:RecordSet;
var row:Object;
rst = res.result;
for (var c:Number = 0;c < rst.length;c++)
{
var nodo:MenuDB = new MenuDB(bosque);
var dat:Array = new Array();
row = rst.getItemAt(c); //Obtenemos registro a registro todos los hijos
dat['titulo'] = row.name;
dat['padre'] = row.parent;
dat['orden'] = row.orden;
dat['added'] = row.added;
//Inicializamos el nodo
nodo.nDat = dat;
nodo.pRnt = row.parent;
nodo.nOrd = row.orden;
//Lo añadimos al arbol/bosque.
nodo.addNodoAt(bosque[row.parent]);
//trace("Nodo: "+nodo.id+" R Padre: "+row.parent+" Padre: "+bosque[row.parent].id+" Nivel: "+nodo.pDN);
}
sh(padre);
}
//MenuDB es mi clase arbol
//------------- Dibujado
function sh(pd)
{
var hijs:Array = bosque[pd].vHijos();
var pdd:Number = hijs[0].pDN;
for(var i:Number = 0; i<hijs.length ; i++)
{
var nodG:MovieClip = attachMovie("item","NodoG"+(i+1)+pdd.toString(),maxprf());
nodG.nodo = hijs[i];
}
}
//------------- Borrado
function rm(pd)
{
var hijs:Array;
var padres:Array;
padres = bosque[bosque[pd].pRnt].vHijos();
for(var x:Number = 0;x<padres.length;x++)
{
hijs = padres[x].vHijos();
var pdd:Number = hijs[0].pDN;
this["NodoG"+(x+1)+padres[x].pDN.toString()].sel._alpha = 0;
for(var i:Number = 0; i<hijs.length ; i++)
{
rm(hijs[i].id);
removeMovieClip(this["NodoG"+(i+1)+pdd.toString()]);
}
}
}
rm era la función ke fallaba, pq si observais borra recorriendo el arbol a saco y sin control. Encima tengo un simbolo llamado Item que contiene esto:
Código :
import MenuDB.MenuDB;
var nodo:MenuDB;
titu.text = nodo.nDat['titulo'];
this._y = (1+(24*nodo.nOrd));
this.tween("_x",1+(152*nodo.pDN),0.2,"linear",0,function(){});
tap.tween("_y",-2,1,"easeOutQuad",0,function(){});
hit.onRelease = function()
{
if(!nodo.esHoja())
{
_parent.rm(nodo.id);
_parent.sh(nodo.id);
sel._alpha = 100; //Marcamos que está seleccionado
}
else
{
_parent.rm(1);
}
}
Con lo cual cada vez que se instancia un item, que pulsabamos en él se HACIA ESTA GUARRADA DE BORRADO

Solución:
Modificando código como dije en la clase MenuDB, para tener más información del nodo en el que estoy, y haciendo un borrado selectivo, para ello el main ahora tiene 2 variables nuevas, un array de camino y un numero de último seleccionado, el array es asociativo, [NIVEL|IDNODO] es decir en la posición equivalente al nivel de profundidad actual, tengo en ella ke nodo se pulsó, de modo que ahora tngo 3 tipos de borrado, uno para cada grupo de situaciones quedando así :
Código :
//------------- Borrado pantalla
//Borrado general
function rm(pd)
{
for(var n:Number = path.length-1;n>=0 && n>=pd.pDN;n--)
{
var hijs:Array = bosque[path[n]].vHijos();
for(var i:Number = 0; i<hijs.length ; i++)
removeMovieClip(this["N"+hijs[i].id.toString()]);
}
}
//Borrado de hijos inmediatos
function rmh(pd)
{
var hijs:Array = bosque[pd].vHijos();
for(var i:Number = 0; i<hijs.length ; i++)
removeMovieClip(this["N"+hijs[i].id.toString()]);
}
//Borrado de un nodo
function rmid(id)
{
removeMovieClip(this["N"+id.toString()]);
}
//---------------------------------
En fins... espero que no os hayais perdido mucho, es más, espero que le sirva de algo a alguien más que a mí, que a mi me ha costado más de un disgusto (REAL

)
Saludos....