Comunidad de diseño web y desarrollo en internet online

Como borrar movieclips (AttachMovie, Array de MovieClips)

Citar            
MensajeEscrito el 07 Oct 2008 01:57 am
Saludos!

RESUMEN:
-->¿Como eliminar un MovieClip insertado por AttachMovie y que ha sido cargado a un array de MovieClips?

EXPLICACIÓN:
Nuevamente me dirijo a la sabia comunidad de Cristalab ;)

Estoy realizando un pequeño proyecto para una asignatura en la Universidad. Yo insisto en que sale en Flash asi que llevo días trabajando en él (bueno, en mi tiempo libre).

Lo que tiene que hacer:
    -->Colocar puntos en pantalla (vértices). //Listo :)
    -->Borrar los puntos. //Aquí voy
    -->Unir los puntos mediante lineas (aristas). //Pendiente :S
    -->(Y algunas otras funciones que espero salgan mucho más fácil de salir estas.)

Y lo que llevo es lo siguiente (es un .swf):

(No se fijen en la parte gráfica, es provisional. Por el momento me interesa más la funcionalidad.)

Lo que no logro es eliminar bien los vértices!

Lo que tengo es lo siguiente:
    -->Un array global que contiene los MovieClips "Vertices" agregados a la pelicula con AttachMovie.


He aquí el código:

Código :

/*ESTE CÓDIGO ES PARTE DE UNA FUNCIÓN Y SI FUNCIONA*/
//Sumamos 1 al contador de vertices, el cual se inició en 0.
NombreVertices++;
//Asignamos el nuevo MC a la variable "NuevoMC".
NuevoMC = attachMovie("Vertice", "v"+NombreVertices,
NombreVertices,
{_x:_xmouse, _y:_ymouse})
//Insertamos el vértice en el vector de vertices.
Vertices_array.splice(NombreVertices-1, 0, NuevoMC);
//Cambiamos el nombre del vértice que aparece en pantalla.
Vertices_array[NombreVertices-1].Nombre_txt.text = NombreVertices;
//Salimos de la función dibujar asignando falso a la variable "dibujar".
dibujar = false;


Ahora, lo que necesito es eliminar el MC y he programado esta función:

Código :

function Eliminar(PosEliminar) {
/*Intercambiamos el último vértice con el que vamos a eliminar para
cambiar únicamente el último vértice y no todos los que estan
despues de este.*/
AEliminar = _global.Vertices_array[PosEliminar-1];
_global.Vertices_array[PosEliminar-1] = _global.Vertices_array[_root.NombreVertices-1];
_global.Vertices_array[_root.NombreVertices-1] = AEliminar;
//Intercambiamos profundidades:
AEliminar.swapDepths(_global.Vertices_array[PosEliminar-1]);
//Eliminamos el último vértice del vector de vértices.
_global.Vertices_array.pop();
/*Eliminamos el vértice de pantalla. (Tomen nota que le
asigné a la variable "AEliminar el MC por lo que sigue allí.)*/
removeMovieClip(AEliminar);
/*Re-nombramos el vértice que hemos cambiado.
(Es decir al que cambiamos de la última posición a la posición
del MC que se eliminó.)*/
_global.Vertices_array[PosEliminar-1].Nombre_txt.text = PosEliminar;
_global.Vertices_array[PosEliminar-1]._name = "v"+PosEliminar;
//Re-asignamos la cantidad de vértices existentes.
_root.NombreVertices--;
}


Esta función la jalo desde el botón "Aceptar" y envio como parámetro el texto que ingresa el usuario (con sus validaciones correspondientes ;)). Como ven, al hacerlo la primera vez funciona perfecto (verlo aquí) pero la segunda ya no lo hace y al parecer se daña la variable "NombreVertices" porque ya no se nombran bien los nuevos vértices agregados.

¿Alguna idea de que rayos estoy haciendo mal? :S

Mil gracias por sus aportes :D

Por driegon

36 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 07 Oct 2008 02:20 am
RAYOS Y CENTELLAS!
¡Lo he logrado!

Mi error:

Código :

//Actions del frame principal
_global.NombreVertices = 0;
_global.Vertices_array = new Array();


Haber colocado eso en el primer frame. Se ejecutaba cada vez que regresaba a él desde el frame "Eliminar", y no solo al cargarse como debía ser.

Solución:

Código :

this.onLoad = function(){
_global.NombreVertices = 0;
_global.Vertices_array = new Array();
}


JaJaJa. En serio, mil disculpas! lo he descubierto justo déspues de postear ^^ Muchas gracias de cualquier manera! (y)

Aquí lo que dejo con el error corregido :D :
Click aquí

Espero más adelante comentarles que mi proyecto ha sido un éxito.

Saludos! :lol:

PD:
-->¿Debo borrar estos dos mensajes?

Por driegon

36 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.