Comunidad de diseño web y desarrollo en internet online

Deseo que un SWF "cargado" en otro SWF se comuniquen

Citar            
MensajeEscrito el 26 Oct 2018 05:18 am
Hola, estimados.

Ante todo le doy las gracias al creador de este foro por permitir que personas compartan sus conocimientos de manera abierta y sin animo de lucro XD.

Bueno, primero que todo soy nuevo en ActionScript 3 y ya comienzo a tener mis problemitas.

Problema: Tengo un SWF que esta cargado a otro SWF por medio de un código que encontré en la web, a saber:

Código ActionScript :

button_1.addEventListener(MouseEvent.CLICK, fl_ClickToLoadUnloadSWF);
import fl.display.ProLoader;

var fl_ProLoader:ProLoader;

var fl_ToLoad:Boolean = true;


function fl_ClickToLoadUnloadSWF(event:MouseEvent):void
{
   if(fl_ToLoad)
   {
      fl_ProLoader = new ProLoader();
      fl_ProLoader.load(new URLRequest("sub_main.swf"));
      addChild(fl_ProLoader);
   }
   else
   {
      fl_ProLoader.unload();
      removeChild(fl_ProLoader);
      fl_ProLoader = null;
   }
   // Cambia si quiere cargar o descargar el archivo SWF
   fl_ToLoad = !fl_ToLoad;
}



Yo entiendo parcialmente como funciona este código, pero mi problema esta como hacer para que un campo de texto que ya tengo dentro de él, sea capaz de enviar información al SWF donde lo tengo cargado.


PD: He intentado buscar ayuda con tutoriales y leyendo sobre el "localConnection" pero todos mis intentos fueros infructuosos, no para de generar errores y leyendo bien me di cuenta que eso solo funciona cuando los SWF están ejecutandose por separado (bueno eso creo haber entendido), el caso es que mis 2 SWF están acoplados, uno dentro del otro.


En resumidas cuentas, deseo saber como puedo lograr que el SWF cargado en el otro SWF puede transmitirle datos.


Anexo un link con los archivos que estoy trabajando. Gracias.


Link de Archivos: https://www.dropbox.com/sh/66knyfk7p4vzl4a/AADcDmPePRxCviCZZzRcAtx0a?dl=0



Main: Es el SWF principal donde se carga el SWF secundario, sub_main

Por Carst

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Oct 2018 08:38 pm
Localconnection se usa cuando no estan los dos en AS3, asumo que si lo estan ambos. EN ese caso puedes intentar acceder a un objeto que ya sabes que existe en lo que cargaste via el DisplayList (por supuesto cuando haya terminado de cargar)

Ejemplo, se que en un MovieClip con nombre formulario, tengo un campo de texto nombre, intento accederlo

this.fl_ProLoader.getChildByName('formulario').getChildByName('nombre').text = 'Pedro';

Eso posiblemente te de error que no reconoce la propiedad. no me acuerdo ya (anos sin tocar AS3) Puedes castearlo a TextField(... todo lo que puse ...).text

Jorge

Por solisarg

BOFH

13516 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 31 Oct 2018 12:52 am
Hola, Jorge. De ante mano te doy las gracias por tomar parte de tú valioso tiempo y responder mi solicitud, pero la verdad solo pude acceder al MovieClip que contiene el TextField, pero no pude acceder al TextField; tampoco recibí respuesta al usar lo que me sugeriste al final de tu comentario con "...TextField(... todo lo que puse ...).text"


Usé esta linea una vez después de la carga del SWF:

this.fl_ProLoader.getChildByName('button_1').getChildByName('parametroA').text


Como respuesta obtengo es un error.

Error: Llamada a un método getChildByName posiblemente no definido mediante una referencia con tipo estático flash.display:DisplayObject.
Creo que el problema es que esos simbolos los hice dentro de ese MovieClip (como en otros niveles, no comprendo bien eso de los niveles).

PD: Sé que solo pude acceder al MovieClip porque probé a cambiar la posición en x con esta linea: this.fl_ProLoader.x=200 y efectivamente lo hizo, lo que no entiendo es porque no puedo acceder a los otros simbolos que tengo dentro de ese MovieClip.




Agradezco y valoro mucho tus comentarios.

Gracias Jorge.

Por Carst

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Oct 2018 04:57 am
Se me pasaba, se me dio por verificar desde el script que tengo en el otro SWF (el que uso para cargar el secundario) cuantos objetos tenía disponible con el método numChildren y me aparece que es 0

XD

Por Carst

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Oct 2018 10:54 am
Nop, es un problema de timing. tienes que verificar esas cosas cuando ha terminado de cargar, si lo haces antes siempre te da 0 y que las cosas no existen.
Un truco que hacia mucho es hacer que los propios elementos cantaran su posicion. Por ejemplo en la linea de tiempo donde tienes el campo de texto 'nombre' pones

trace('Campo de texto es '+nombre);

Si el nombre de instancia es correcto, veras la ruta en el output dentro de flash. Buscate codigo de preload para asegurarte que haces todo cuando realmente ha terminado de cargar y no antes

Jorge

Por solisarg

BOFH

13516 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

   Página 1 de 1

 

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