Comunidad de diseño web y desarrollo en internet online

Usando de URLLoader

Citar            
MensajeEscrito el 03 Jul 2010 03:16 am
Hola que tal un cordial saludo a cada uno de ustedes Clabers.

Bueno el motivo de abrir este topic es porque estoy trabajando con un objeto URLLoader, explico rápidamente la situación.

Tengo 2 archivos FLA
1) home
2) tema1

El archivo tema1 contiene en escenario(root1 o MainTimeline como lo conozcan) 2 MC boton1 y boton2, ambos tienen script dentro de para realizar ciertas operaciones. Y en el MainTimeLine en la única capa que tengo y en el único fotograma, tengo el siguiente script

Código ActionScript :

boton1.addEventListener(MouseEvent.MOUSE_OVER,funcion1);
function funcion1(e:MouseEvent):void{
   trace("Desde arriba");
}

boton2.addEventListener(MouseEvent.MOUSE_OVER,funcion2);

function funcion2(e:MouseEvent):void{
   trace("Arriba uoo");
   miClip.width+=100;
}
stop();



El archivo home contiene en escenario (MainTimeline) un MovieClip llamado miVisor, este MC contiene varios objetos dentro y contiene script para la manipulación de los mismos (estoy manejando este MC como un boton), para manipular por completo el MC manejo el this.addEventListener(MouseEvent.TipoEvento...)

Todo bien hasta ahí hace todo lo que quiero, también tengo esta función.

Código ActionScript :

function cargarMiContenido(direccion:String):void{
   
   var temporizador:Timer=new Timer(50);
   var estadoAnimacion:Boolean;
   
   var dirURL:URLRequest=new URLRequest(direccion);
   var miLoader:Loader=new Loader();
   var urlCarga:URLLoader=new URLLoader();
   urlCarga.load(dirURL);
   
   estadoAnimacion=true;
   barraDeCarga.visible=true;
   barraDeCarga.alpha=0;
   temporizador.addEventListener(TimerEvent.TIMER,animacion);
   barraDeCarga.addEventListener(ProgressEvent.PROGRESS,cargando);
   barraDeCarga.addEventListener(Event.COMPLETE,continuar);
   miLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,mostrarContenido);
   
   temporizador.start();
   barraDeCarga.source=urlCarga;
   
   function animacion(e:TimerEvent):void{
      if(estadoAnimacion){
         if(barraDeCarga.alpha<1){
            barraDeCarga.alpha+=0.2;
         }else{
            barraDeCarga.alpha=1;
            temporizador.stop();
         }
      }else{
         if(barraDeCarga.alpha>0){
            barraDeCarga.alpha-=0.2;
         }else{
            barraDeCarga.alpha=0;
            barraDeCarga.visible=false;
            temporizador.stop();
         }
      }
   }
   
   function cargando(e:ProgressEvent):void{
      cuadroTexto.visible=true;
      cuadroTexto["etiqueta"].text=etiqueta+" "+int(barraDeCarga.percentComplete)+"%";
   }
   
   function continuar(e:Event):void{
      cuadroTexto.visible=false;
      
      barraDeCarga.removeEventListener(ProgressEvent.PROGRESS,cargando);
      barraDeCarga.removeEventListener(Event.COMPLETE,continuar);
      
      estadoAnimacion=false;
      temporizador.start();
      miLoader.load(dirURL);
   }
   
   function mostrarContenido(e:Event):void{
      miLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,mostrarContenido);
      miLoader.width=cajaDeContenido.width;
      miLoader.height=cajaDeContenido.height;
      miLoader.x=-1*(miLoader.width/2);
      miLoader.y=-1*(miLoader.height/2);
      cajaDeContenido.addChild(miLoader);
      cajaDeContenido.enabled=false;
   }
}


Esta función me carga un swf (tema1.swf) dentro de un MC llamado cajaContenido (Este MC esta dentro de miVisor), no hay problema al cargarlo lo carga bien, mi duda es porque cuando paso el mouse sobre el el mc boton1 del swf cargado me marca el siguiente error.

Código :

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
   at Contenedor/sobreBoton()


se que miVisor es una instancia de Contenedor y que sobreBoton es una funcion que esta dentro del MC miVisor y funciona bien.

Y cuando paso el mouse sobre el boton2 (que igual es del swf cargado) no me marca ningun error hace lo que tiene que hacer.

Y otra pregunta, como puedo deshabilitar el swf cargado, o como puedo acceder a los objetos, funciones del mismo.


Creo que es todo lo que tengo de dudas, de antemano Clabers muchas gracias ,jep y que Viva Clab!! :cool:

Por Deivtox

72 de clabLevel



Genero:Masculino  

Estudiante

firefox
Citar            
MensajeEscrito el 03 Jul 2010 11:43 am
Si no encuentra la función es porque está fuera de scope (en otro timeline por ejemplo) o aún no ha sido definida.

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 Jul 2010 06:37 pm
@solisarg aun no comprendo muy bien mira este es el script que esta dentro del boton1

Código ActionScript :

var nombre:String;

function iniVariables():void{
   nombre="David Guerrero";
}

function cuentas(retardo:int):void{
   trace("Ejecutando cuentas...");
   var tiempo:Timer=new Timer(retardo,10);
   var i:int
   tiempo.addEventListener(TimerEvent.TIMER,contar);
   tiempo.start();
   function contar(e:TimerEvent):void{
      trace("Valor de i="+i);
      i++;
      barrita.alpha-=0.1;
   }
}
cuentas(1000);

this.addEventListener(MouseEvent.MOUSE_OVER,jeje);

function jeje(e:MouseEvent):void{
   trace("desde el boton");
   
}


stop();


y este es el que esta dentro del boton2

Código ActionScript :

var tiempo:Timer=new Timer(1000);
var i:int;
tiempo.addEventListener(TimerEvent.TIMER,jj);
this.addEventListener(MouseEvent.MOUSE_OVER,hola);
function jj(e:TimerEvent):void{
   trace("Contando"+i);
   i++;
}

function hola(e:MouseEvent):void{
   trace("un saludo");
}

stop();


y en mi MainTimeLine en el único fotograma que tengo donde están los 2 botones tengo lo siguiente

Código ActionScript :

boton1.addEventListener(MouseEvent.MOUSE_OVER,funcion1);
function funcion1(e:MouseEvent):void{
   trace("Desde arriba");
}

boton2.addEventListener(MouseEvent.MOUSE_OVER,funcion2);

function funcion2(e:MouseEvent):void{
   trace("Arriba uoo");
   boton1.width+=100;
}
stop();


Y no entiendo porque un botón me marca ese error cuando se carga en el otro FLA.

Y en dado caso como puedo manipular el swf cargado con el URLLoader, para acceder a los botones desde mi FLA principal, o simplemente para deshabilitar ese swf cargado. Gracias de antemano

Por Deivtox

72 de clabLevel



Genero:Masculino  

Estudiante

firefox
Citar            
MensajeEscrito el 05 Jul 2010 02:16 pm
No entiendo muy bien las dependencias de movie dentro de movie, aunque el motivo ya te lo dije. En el code que aportaste lo que veo es que sobreesecribes el MOUSE_Over, haciendo innecesario que lo declares dentro de los botones

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Jul 2010 07:50 pm
Si tienes razón @solisarg, checare esas funciones que tengo sobreescritas, pero igual vuelvo a preguntar como puedo manipular el objeto que descargo con el URLLoader, ¿Lo meto a un Contenedor como lo es un MC, o Sprite?

Por Deivtox

72 de clabLevel



Genero:Masculino  

Estudiante

firefox
Citar            
MensajeEscrito el 05 Jul 2010 08:20 pm
objetos URLLoader y Loader son distintos, creo te estas confundiendo, lo que cargas con URLLoader object es data(xml,txt..etc), Loader(SWF, jpg, png..), ahora para acceder y manipular lo que cargas con un Loader como un swf lo que haces es usar el content del objeto Loader y crear una variable, por ejemplo :

Código ActionScript :

function onComplete(e:Event):void
{
   var obj:MovieClip = (e.target.content) as MovieClip;
   //var obj:MovieClip = (loader.content) as MovieClip;
   //obj.miMetodo()
   //obj.miPropiedad
}


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 06 Jul 2010 01:33 am
@maneuver :o tienes mucha razón con respecto al URLLoader y Loader, al parecer todo este tiempo he estado implementando mal mi URLLoader, checare eso y procedere a cambiar el tipo de objeto que utilizo, muchas gracias por los aportes hechos en este topic, resulta muy eficiente para el apredizaje de novatos :lol: como yo en este mundo del AS 3.0.

Por Deivtox

72 de clabLevel



Genero:Masculino  

Estudiante

chrome

 

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