Comunidad de diseño web y desarrollo en internet online

Problema con attachMovie

Citar            
MensajeEscrito el 02 Nov 2009 02:14 pm
Buenas a todos. Tengo un problemilla a la hora de eliminar un attachMovie, en el codigo que les muestro a continuacion creo un minijuego de hacer parejas, el problema viene cuando acabo de hacer todas las parejas y automaticamente carga un nuevo juego (drop and drag), ya que si le coloco el siguiente codigo

Código ActionScript :

for (a in _root) {
suj = _root[a];
suj.removeMovieClip();
}


lo que me sucede es que el siguiente juego (drag and drop), no me funciona el drag and drop.

Código ActionScript :

aciertos = 0;
clicks = 0;
totalParejas = 0;
par_array = new Array("uno", "uno", "dos", "dos", "tres", "tres",
                        "cuatro", "cuatro", "cinco", "cinco", "seis",
                        "seis", "siete", "siete", "ocho", "ocho",
                        "nueve", "nueve", "diez", "diez");
copia_array = new Array("uno", "uno", "dos", "dos", "tres", "tres",
                        "cuatro", "cuatro", "cinco", "cinco", "seis",
                        "seis", "siete", "siete", "ocho", "ocho",
                        "nueve", "nueve", "diez", "diez");



portada02.onPress = function(){
   portada02.gotoAndStop(2);
   rules01.gotoAndStop(2);
}
rules01.onPress = function(){
   rules01.gotoAndStop(1);
   crearJuego();
}



//Colocar las parejas
function crearJuego(){
   for (x=0; x<5; x++){
      for (y=0; y<4; y++){
         i = (x*4) + y;
         n = Math.round(Math.random()*(par_array.length-1));
         
         attachMovie("cuadro", "cuadro"+i, i);
         this["cuadro"+i]._x = 150 * x + 120;
         this["cuadro"+i]._y = 150 * y + 10;
         this["cuadro"+i].id = i;
         this["cuadro"+i].pareja = par_array[n];
         eliminar(par_array, n);
         
         this["cuadro"+i].onPress = function(){
            if (clicks == 2){
               for (i=0; i<clicks; i++){
                  removeMovieClip(_root["pareja"+i]);
               }
               clicks = 0;
            }
            
            attachMovie(this.pareja, "pareja"+clicks, 30+clicks);
            _root["pareja"+clicks]._x = this._x;
            _root["pareja"+clicks]._y = this._y;
            _root["pareja"+clicks].pareja = this.pareja;
            _root["pareja"+clicks].borrar = this._name;
            _root["pareja"+clicks].id = this.id;
            clicks++;
            
            //Comprobamos si es una pareja
            if (clicks == 2){
               //Si son iguales les cambiamos el nombre para no borrarlos luego
               //También cambiamos su profundidad
               if (pareja0.pareja == pareja1.pareja && pareja0.id != pareja1.id){
                  removeMovieClip([pareja0.borrar]);
                  removeMovieClip([pareja1.borrar]);
                  pareja0.swapDepths(100+aciertos);
                  pareja0._name = "pareja0" + aciertos;
                  pareja1.swapDepths(200+aciertos);
                  pareja1._name = "pareja1" + aciertos;
                  aciertos++;
                  totalParejas++;
               }
               
               //Fin de la partida
               if (aciertos == 10){
                  /*for (a in _root) {
                     suj = _root[a];
                    suj.removeMovieClip();
                     }*/
                  //Has ganado la partida
                  this.createEmptyMovieClip("cargador", 1);
                  cargador._x = 0;
                  cargador._y = 0;
                  loadMovie("parejas02.swf", cargador);
                  
                  
               }
            }
         }
      }
   }
}

function eliminar(el_array, pos){
   for (pp=pos; pp<el_array.length; pp++){
      el_array[pp] = el_array[pp+1];
   }
   el_array.pop();
}

Por Azlinraeh

15 de clabLevel



 

España

firefox
Citar            
MensajeEscrito el 02 Nov 2009 07:26 pm
En vez de ponerlo en la línea de tiempo principal, pon todo dentro de un MovieClip contenedor que luego quites, asegurándote que quitas todo sin costosos for...in

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Nov 2009 07:44 am
Gracias por la respuesta Jorge, he probado lo que me dices, pero al colocar todo dentro de MovieClip, me da el siguiente error:

"Statement must appear within on/onClipEvent handler"

He probado a meterlo dentro de un onClipEvent, pero ahi ya no me funciona ni el juego. Voy a seguir haciendo pruebas, si a alguien se le ocurre alguna sugerencia la aceptare gustosamente. :)

Por Azlinraeh

15 de clabLevel



 

España

firefox
Citar            
MensajeEscrito el 03 Nov 2009 10:36 am
Seguramente creaste un clip, lo seleccionaste en el escenario y le diste a F9 para abrir el panel de acciones. Mejor prueba esto: seleccionas el clip en el escenario, le das doble click para acceder a su línea de tiempo y pones el code en el primer fotograma

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Nov 2009 03:36 pm
Lo que sucede es que si tratas de borrar y recrear los mismos clips en una misma secuencia de acciones, no funciona porque el borrado real lo realiza flash después de terminar una secuencia de acciones.
Yo te propongo dos formas de solucionarlo:
1) partir el codigo en dos fotogramas consecutivos, en el primero poner el borrado, y en el segundo poner la creación.

2) crear una sola vez los movieclips, y en cada juego solo reposicionarlos, sin borrar ni crear de nuevo.

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

firefox
Citar            
MensajeEscrito el 06 Nov 2009 09:35 am
Jorge tenias razon era eso lo que me pasaba. ;) Muchas Gracias de nuevo por la ayuda prestada.

Por Azlinraeh

15 de clabLevel



 

España

firefox
Citar            
MensajeEscrito el 10 Nov 2009 03:01 pm
Pues Jorge como ya dije en mi anterior post, tenias razón. Pero el problema ,que no vi en su momento, es que ahora cuando descubro las parejas, me las descubre todas en el mismo punto, en la esquina superior izquierda. con lo que no funciona.... no entiendo porque al ponerlo dentro de un clip no coloca bien las cartas cuando las destapas para hacer las parejas...

Gabynufe, probé lo que tu me comentaste, pero sigue sin funcionarme el "drag and drop".

Empiezo a desesperarme!!! :lol: si no logro eliminar este attachmovie dejo flash!!!! :lol:

Por Azlinraeh

15 de clabLevel



 

España

firefox
Citar            
MensajeEscrito el 10 Nov 2009 03:30 pm
No entiendo muy bien el tema, pero seguramente está relacionado con el punto de anclaje (la crucecita que vez al editar el MovieClip), mueve lpos gráficos en relación a ese punto

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Jul 2011 07:31 pm
no lo dejes men
mira un ejemplo de varios arrays
numero=0
var id = setInterval(crearenemigo, 40000);
var blue_array = new Array();
function crearenemigo() {
blue_array.push("blue"+numeroblue);
blue = _root.attachMovie("enemigox", "blue"+numeroblue, numero, {_x:1500,
numero++
blue.onPress=function{
this.unloadMovie();
blue_array.splice(x, 1);
}
}

Por raptor0555

53 de clabLevel



Genero:Masculino  

Desarrollador de juegos

firefox

 

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