Comunidad de diseño web y desarrollo en internet online

Cerrar Módulo

Citar            
MensajeEscrito el 08 Sep 2009 11:00 pm
Estoy tratando de ver como funcionan los módulos, hasta ahora venía haciendo aplicaciones chicas y leí por ahí que para hacer una aplicación grande puede ser conveniente usar Módulos. Lo que hice hasta ahora fue llamar a un Módulo, pero mi pregunta es la siguiente: Cómo lo cierro? o como vuelvo al Main después? Si al Módulo le agrego un botón "Cerrar" o "Volver" que código iría?? Gracias a todos!!!!!!!!!1 :)

Por xchacalx

Claber

133 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Sep 2009 05:47 am
Al decir módulos te refieres a clases?, estas usando grupos de clases con un fin común?

De hecho nunca sales de Main, si cargas modulos estos se llaman desde el main y para regresar pues bastaria con eliminar instancias relacionadas con las clases de tu modulo para que luego el garbage collector se los recoja.

Por GersonM_17

330 de clabLevel



Genero:Masculino   Héroes

Flash AS3 / PHP Developer

chrome
Citar            
MensajeEscrito el 09 Sep 2009 01:59 pm
Unas preguntas, estás usando Flash o Flex? usas ModuleLoader?

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 09 Sep 2009 02:42 pm
Si uso Flex 3 y ModuleLoader, para llamar al Módulo hago esto:
<mx:Script>
<![CDATA[
private function loadMyModule(moduleURL:String):void{
MiModulo.url= moduleURL;
MiModulo.loadModule();
}

]]>
</mx:Script>


<mx:Button x="79" y="97" label="Button" click="loadMyModule('Modulo1.swf')"/>
<mx:ModuleLoader x="79" y="127" width="804" url="Modulo1" id="MiModulo" height="474" backgroundColor="#FFFFFF">
</mx:ModuleLoader>

Con ese código puedo ver el Modulo, pero no puedo cerrarlo. Para cerrarlo probe esto:
<mx:Script>
<![CDATA[
private function Cerrar():void{
if (parent != null)
{
parent.removeChild(this);
}
}

]]>
</mx:Script>

Todo bien, lo cierra pero después cuando lo quiero volver a abrir no abre!!! es decir una vez que apretas cerrar(botón dentro del módulo) NO abre mas!!!
Gracias y espero que puedan ayudarme, debe ser una tonteria.

Por xchacalx

Claber

133 de clabLevel



 

msie7
Citar            
MensajeEscrito el 09 Sep 2009 02:43 pm
Sí, uso Flex 3 y ModuleLoader, para llamar al Módulo hago esto:
<mx:Script>
<![CDATA[
private function loadMyModule(moduleURL:String):void{
MiModulo.url= moduleURL;
MiModulo.loadModule();
}

]]>
</mx:Script>


<mx:Button x="79" y="97" label="Button" click="loadMyModule('Modulo1.swf')"/>
<mx:ModuleLoader x="79" y="127" width="804" url="Modulo1" id="MiModulo" height="474" backgroundColor="#FFFFFF">
</mx:ModuleLoader>

Con ese código puedo ver el Modulo, pero no puedo cerrarlo. Para cerrarlo probe esto:
<mx:Script>
<![CDATA[
private function Cerrar():void{
if (parent != null)
{
parent.removeChild(this);
}
}

]]>
</mx:Script>

Todo bien, lo cierra pero después cuando lo quiero volver a abrir no abre!!! es decir una vez que apretas cerrar(botón dentro del módulo) NO abre mas!!!
Gracias y espero que puedan ayudarme, debe ser una tonteria.

Por xchacalx

Claber

133 de clabLevel



 

msie7
Citar            
MensajeEscrito el 09 Sep 2009 03:17 pm
Ok, el problema es que al parecer estás destruyendo el moduleLoader, la solución que te voy a dar probablemente no es la más adecuada pero funciona, la idea es que la funcion cerrar() llame al modulo desde afuera y le de la orden unloadModule() así:

Código :

private function Cerrar():void{
if (parent != null)
  {
    Application.application.MiModulo.unloadModule();
  }
}

Ten en cuenta que supongo que es posible hacerlo de otro modo, pero por ahora se que esto te funcionará.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 09 Sep 2009 04:08 pm
Gracias por tu ayuda Xyrer. pero no me funciona. Si pongo el código Cerrar dentro del Módulo, no me toma el código; ahora si lo cierro desde afuera, como me dijiste, es decir desde el Main, cómo le digo al botón cerrar que está dentro del Módulo, que tome la función del Main "Cerrar"? Estoy bastante confundido con todo esto, espero puedas ayudarme... Gracias!!

Por xchacalx

Claber

133 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Sep 2009 04:36 pm
la función cerrar debe estar dentro del módulo, si con "no me toma el código" te refieres a que el botón no hace nada pues habría que revisar el resto del código más a fondo, ahora, noto que en el moduleLoader lo inicias con una URL y no hace nada, entonces te sugiero que la quites, y lo otro es la sentencia

Código :

 if (parent != null)
a la que tampoco le veo sentido, tal vez si dejas el código así:

Código :

private function Cerrar():void
{
  Application.application.MiModulo.unloadModule();
}
dentro del módulo, hay que notar que Application.application se refiere a la aplicación principal y a eso me refería con cerrarlo desde afuera, porque no haces referencia parent o a ninguna ruta relativa sino a la referencia absoluta del objeto ModuleLoader, así que el moduleLoader que llamaste MiModulo debe estar ahí en la aplicación principal para que funcione.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 09 Sep 2009 06:14 pm
Si ya entendí, ahora me funciona, pero cuando lo cierro y quiero volver a abrilo me sale este error:
"TypeError: Error #1034: Error de conversión forzada: no se puede convertir mx.managers::HistoryManagerImpl@543d3f9 en mx.managers.IHistoryManager."
Bueno igualmente muchas gracias por tu tiempo!!! Recién estoy comenzando con esto de los Módulos y me parece muy util! Gracias!!!!

Por xchacalx

Claber

133 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Ene 2010 01:42 am
solo tienes que importar el HistoryManager.

agrega estas lineas en el main mxml.

Código :

import mx.managers.HistoryManager;   
private var hist : HistoryManager; 

Por Wanaya

Claber

1115 de clabLevel

4 tutoriales

 

La Unión Sovietica U_U

firefox

 

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