Comunidad de diseño web y desarrollo en internet online

Error en lectura de MovieClips en pantalla...URGENTE!!!

Citar            
MensajeEscrito el 03 Dic 2008 02:04 am
Antes que nada hola....es la primera ves que hago una consulta por aqui pero ya antes me habia ayudado visitar sus foros espero me puedan ayudar, soy un poco principiante asi que pido paciencia.

Mi problema es el siguiente: tengo varios fotogramas con ejercicios distintos y debo en un limite de tiempo mostrar estos ejercicios...cada frame manda llamar una funcion "carga" que dependiendo el nombre del movieclip le agrega eventos y propiedades, cada que un ejercicio se contesta se manda llamar otro y se repite la carga se trata de ver quien hace mas ejercicios, el problema es que en ciertas ocasiones me lanza el clasico error #1009 acceso a un objeto o propiedad nula :twisted: pero los objetos estan en pantalla porque me dice que son nulos ademas no siempre pasa y no siempre es el mismo fotograma a veces un fotograma lanza error otras no.....Dejo el codigo de esta carga para que le den un vistazo.

Código :

public function carga() {
         
         inicio_arreglos();
            
         var nombre:String=new String();
         var short_name:String=new String();
          
          
         for (var i=0; i<this.numChildren; i++) {
            
            
            nombre=this.getChildAt(i).name;
             
            if (nombre.indexOf("a")==0) {
               
               trace("nombre: "+nombre);
               
               var obj=this.getChildAt(i);
               
               var punto:Point=new Point(obj.x,obj.y);
               
               short_name=nombre.substring(nombre.indexOf("_"));
               
               obj.addEventListener(MouseEvent.MOUSE_DOWN,arrastrar);
               obj.addEventListener(MouseEvent.MOUSE_UP,soltar);
               obj.destino=Number(short_name.substring(short_name.indexOf("_")+1));
               trace("destino: "+obj.destino);
               
               coordenadas[Number(nombre.substring(1,nombre.indexOf("_")))]=punto;
               
               
               
               if(obj.visible==false){
                   obj.visible=true;
                  }
                  origenes_array.push(obj);

            }else if (nombre.indexOf("d")==0 ) {
               trace("nombre: "+nombre);
               var obj2;
               var pos:Point;
               short_name=nombre.substring(nombre.indexOf("_"));
               obj2=this.getChildAt(i);
               obj2.destino=Number(short_name.substring(short_name.indexOf("_")+1));
               pos=new Point(obj2.x,obj2.y);
               trace("destino: "+obj2.destino);
               
                    obj2.unico=false;
               
               
               obj2.addChild(crearContenedor(obj2));

               pos=obj2.getChildAt(obj2.numChildren-1).globalToLocal(pos);
               obj2.getChildAt(obj2.numChildren-1).x=pos.x;
               obj2.getChildAt(obj2.numChildren-1).y=pos.y;
               destino_array.push(obj2);



            }
            
            else if (nombre.indexOf("c")==0) {
                obj;
               obj=this.getChildAt(i);
               short_name=nombre.substring(nombre.indexOf("_"));
               obj.addEventListener(MouseEvent.CLICK,click_origen);
               obj.destino=Number(short_name.substring(short_name.indexOf("_")+1));
               origenes_array.push(obj);
              }
            
            
         }
         
      }
      ////////////////////////////////////


Usualmente el error aparece en esta linea "nombre=this.getChildAt(i).name;" pero tmb llega aparecer lineas mas abajo.

Segundo espero no sea abuso de confianza.....ciertos movieclips son arrastrables , uso lo mas sencillo startDrag(); el problema esque cualquier movieclip que se arrastre al cambio de frame sigue viendose en pantalla, no entiendo por que si no pertenece a ese frame.

De antemano gracias por su ayuda... :)

Por Angel Roberto

Claber

248 de clabLevel



 

msie7
Citar            
MensajeEscrito el 03 Dic 2008 07:39 am
Como idea: ¿Por qué no usas getChildByName? Es posible que algún getChildAt(i) devuelva un Grafic, p.e. y p.e. un Grafic no tiene name
Supongo que en las funiones usas e.target para referirte a los MCs

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Dic 2008 03:50 pm
Gracias Eliseo2 por responder, te comento que si llego a usar GetChildByName() pero solo en los casos que conozco el nombre para este caso solo se que el nombre va empezar con "a" con "c" o con "d", pero pondre una proteccion para aquellos que no son MovieClip....muchisimas gracias no pense en eso espero funcione y en cuanto al e.target....juego un poco con el parent uno o dos nodos y doy con mi Clip :lol: GRACIAS!!

Por Angel Roberto

Claber

248 de clabLevel



 

msie7
Citar            
MensajeEscrito el 03 Dic 2008 04:13 pm
Ya no lanza el error de null ^^ solo puse una proteccion para los objetos que no fueran MC's..

Código :

   var clip=this.getChildAt(i);
            if(clip is MovieClip){
            nombre=clip.name;
            }else{
            nombre="nada";
            }


Pero tengo otro problema ojala y tmb se pueda resolver con su ayuda, :oops: lo que pasa es que en pantalla hay 3 objetos que se pueden arrastrar hasta llevarse a un destino, una vez que alguno se dejo en el destino cambia de fotograma claro antes del cambio tengo una funcion de limpieza que regresa los objetos arrastrables a su posicion oroginal e inclusive los hago invisibles, esto porque si algun objeto se llega a mover aunque no se deje en su destino si solo se mueve al cambio de fotograma se sigue viendo y en algunos casos esto pasa inclusive sin moverlos.....al leer los MC's los almaceno en algunos arreglos para su consulta posterior pero limpio todos estos arreglos antes de cambiar de fotograma...no se si me puedan ayudar con eso. Gracias.

Por Angel Roberto

Claber

248 de clabLevel



 

msie7
Citar            
MensajeEscrito el 03 Dic 2008 06:14 pm
Sé que en AS.2 Todos los MCs creados con EmptyMovieClip, duplicateMovieClip y attachMovieClip -vamos los que no estaban creados en "tiempo de diseño" al tener una depth mayor que 0 se veían a lo largo de toda la vida de la película, el único modo de quitárselos de encima era con un removeMovieclip.
Ahora con addChild supongo que pasará algo parecido, así que supongo que no queda más remedio que "removerlos" con un removeChild() o un removeChildAt() pero ya te digo que ni idea

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Dic 2008 08:24 pm
No puedo usar removeChild() ya que una vez que se muestran todos los fotogramas vuelvo a lanzarlos de nuevo y si les remuevo graficos ps nos e verian.

Por Angel Roberto

Claber

248 de clabLevel



 

msie7
Citar            
MensajeEscrito el 04 Dic 2008 05:24 pm
Lo semiresolvi volviendo invisibles los graficos despues de mostrar cada frame pero si alguien tiene una mejor solucion o sabe porque pasa esto lo agradeceria mucho.

Por Angel Roberto

Claber

248 de clabLevel



 

msie7

 

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