Primero yo usaria un arreglo para guardar la categoria de cada icono,
supongo que los iconos los tienes nombrados como mc1, mc2, ... mc22, mc23 ...
y supongo que los iconos del 1 al 7 corresponden a la primera categoria, y los iconod del 8 al 12 (por ejemplo) a la segunda, y del 13 al ... a la tercera,
el primer valor corresponde al indice 0
Código :
arrIconos = [0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4];
los numeros del arreglo corresponderan al número de categoria al que pertenece el icono.
por ejemplo: arrIconos[1] contendrá el número de categoria del mc1
luego inicializaria los movieclips correspondientes a las categorias (supongo que se llaman va1, va2 ...):
Código :
for (nC=1; nC <=4; nC++) { this["va" + nC].nCategoria = nC; }
luego haria un loop para inicializar todos los iconos:
Código :
for (nIcono=1; nIcono<=arrIconos.length; nIcono++) {
objIcono = this["Icono" + nIcono];
objIcono.nCategoria = arrIconos[nIcono];
objIcono.PosX = objIcono._x;
objIcono.PosY = objIcono._y;
objIcono.swEncarpetado = false;
objIcono.onPress = function () {
startDrag(this,false)
this.swapDepths(_parent.getNextHighestDepth());
}
objIcono.onRelease = function () {
stopDrag();
// segun tu codigo puedes colocar el icono en cualquier categoria
for (nC=1; nC <=4; nC++) {
objCategoria = this._parent["va" + nC];
if (this.hitTest (objCategoria)) {
this.swEncarpetado = true;
this._x = objCategoria._x; // el icono toma la posición de la categoria
this._y = objCategoria._y;
return;
}
}
// pero si lo que quieres es que el icono solo caiga en la categoria a la que pertenece
// entonces debes usar el siguiente código (ignorando todo el FOR)
objCategoria = this._parent["va" + this.nCategoria];
if (this.hitTest (objCategoria)) {
this.swEncarpetado = true;
this._x = objCategoria._x; // el icono toma la posición de la categoria
this._y = objCategoria._y;
return;
}
this._x = this.PosX; // aqui se regresa el icono a su lugar, si es que no se solto en alguna categoria
this._y = this.PosY;
}
}
Aqui los movieclips mc1, mc2, ...
les estoy asignando propiedades como
nCategoria que contiene el número de categoria a la que corresponde
PosX y PosY que contienen la posición original del icono
swEncarpetado que nos indicara si el icono ya fue arrastrado a una carpeta o no
-------------------------------------------
Ahora con respecto a mostrar solo los iconos de una categoria,
supongo que tienes 4 movieclips que al oprimirlos (onRelease) solo muestra los iconos de la categoria
entonces el codigo de cada boton debe ser asi:
Código :
on (release) {
_root.muestraIconos(1);
}
on (release) {
_root.muestraIconos(2);
}
on (release) {
_root.muestraIconos(3);
}
on (release) {
_root.muestraIconos(4);
}
y la función muestraIconos se definirá en el primer fotograma de tu pelicula principal.
Código :
muestraIconos = function (nCatMostrar) {
for (nIcono=1; nIcono<=arrIconos.length; nIcono++) {
objIcono = this["Icono" + nIcono];
if (objIcono.swEncarpetado or objIcono.nCategoria == nCatMostrar) {
objIcono._visible = true;
} else {
objIcono._visible = false;
}
}
}
Esta función muestra iconos que no estan encarpetados y que no son de la categoria solicitada
los demás iconos los desaparece
referente a lo del boton invisible alrededor no entiendo su función...
espero te sirva este codigo y nos cuentas...