Aprendiendo

34 views
Skip to first unread message

Leo Valls

unread,
Aug 7, 2009, 11:42:21 AM8/7/09
to Flex AIR Venezuela
Buenos días amigos, sigo intentando aprender a manejar flex y tengo
varias dudas que espero puedan responder.

una de ellas es que al intentar correr un ejemplo aparece el siguiente
error:

" Flex Builder cannot locate the requiered version of flash player.
You might need to install flash player 9 or reinstal flex builder.
Do you want to try to run your application whith the current
version?"
ya probe instalando el flash player 9 y reinstalando el Flex builder
como lo indica el mensaje.. pero continua el error.

la otra duda es que estaba leyendo acerca del AdvancedDataGrid pero no
logre entender como trabaja o cual seria la diferencia entre usar un
AdvancedDataGrid o un DataGrid normal

Gracias de antemano por la ayuda que puedan ofrecer!!!!

Rafael Ochoa: Flex Air Venezuela

unread,
Aug 7, 2009, 11:48:16 AM8/7/09
to Flex AIR Venezuela
Buenos dias,
Lo que te pasa es que no tienes la version de programacion "content
debugger" del Flash player 10
Te digo el 10 porque es el que se esta utilizando ahora.
Lo puedes conseguir aqui:
http://www.adobe.com/support/flashplayer/downloads.html

Lo del AdvanceDatagrid tendria que leer un poco para ayudarte, quizas
alguien mas pueda hacerlo.

Espero haberte ayudado, pregunta si tienes alguna duda.

Leo Valls

unread,
Aug 7, 2009, 11:58:39 AM8/7/09
to Flex AIR Venezuela
otra pregunta algo tonta.
en la pagina salen varias versiones del "content debugger"
una para IE, otra para netscape y otra para mac
como hago en el caso de usar firefox u otro navegador???


On 7 ago, 11:48, "Rafael Ochoa: Flex Air Venezuela"

Rafael Ochoa: Flex Air Venezuela

unread,
Aug 7, 2009, 12:03:56 PM8/7/09
to Flex AIR Venezuela
Para otros browsers debes bajar :
Download the Windows Flash Player 10 Plugin content debugger (for
Netscape-compatible browsers) (EXE, 2.09 MB)

Leo Valls

unread,
Sep 10, 2009, 10:35:00 AM9/10/09
to Flex AIR Venezuela
Buenos dias.. nuevamente les escribo para hacer otra pregunta algo
sencilla...
¿Como hago para redireccionar de una ventana a otra?
por ejemplo... tengo mi ventana de login y en lo que verifica el
usuario y la contraseña me lleve a la ventana de menu
o si le doy a un boton x me abra una ventana

Gracias nuevamente por la ayuda que me puedan prestar!!!


On 7 ago, 12:03, "Rafael Ochoa: Flex Air Venezuela"

Carlos Pacheco

unread,
Sep 10, 2009, 12:11:00 PM9/10/09
to flex-...@googlegroups.com

www.developyourdream.net

unread,
Sep 10, 2009, 11:02:22 AM9/10/09
to Flex AIR Venezuela
Hola, tienes varias opciones.

1.- La forma perfecta de programar, separar el codigo de las vistas y
la coloques en una carpeta aparte llamada modelo, y haces un
ViewLocator y un ModelLocator, el el modelLocator puedes tener la
logica de todas tus vistas y en el ViewLocator puedes tener una
instancia de todas tus Vistas. ModelLocator puedes hacer tus
validaciones y llamas al ViewLocator para que Maneje la logica de
display de tus Vistas.

2.- La forma complicada varias vistas que se instancien entre ellas
mediante eventos o paso por parametros.le dices desde una vista a otra
vista removeChiled( lo que quieras remover );

3.- La forma Engorrosa , todo en una misma vista y haces lo mismo que
el paso 2.

4.- Porma medio sencilla, metes todo en un <mx:ViewStack>y llamas al
indice que quieres que se vea en la pantalla.

Susan Barraez

unread,
Sep 10, 2009, 12:53:21 PM9/10/09
to flex-...@googlegroups.com
Guys a mi tambien se me presento la misma duda que menciono Leo anteriormente, como hago para establecer la navegacion??? se que no es necesario hacer multiples paginas como en html, pero me crea la duda de navegacion, como es el proceso?, como se pasan los parametros??? con los mismos procedimientos tradicionales en el mundo web...??? Me gustaria por favor me aclararan la duda.

Saludos

Susan Barraez

2009/9/10 Leo Valls <leov...@gmail.com>



--
Susan Barraez

Ciro Duran

unread,
Sep 11, 2009, 7:48:43 AM9/11/09
to Flex AIR Venezuela
La respuesta es: depende. Depende de cómo quieras hacer la navegación.

En nuestra aplicación tenemos tres estados: uno para el login, otro
para cargar y otro con la pantalla principal. Dentro de esa pantalla
principal tenemos una botonera encima con todas las secciones de la
aplicación, y en el medio tenemos un cargador de módulos
(moduleLoader). Cada sección de nuestra aplicación es un módulo. Y
algunos de estos módulos también tienen estados para su navegación
interna. Podrías implementarlo también como un viewstack como leí en
una respuesta anterior.

Con respecto al pase de parámetros... también depende. Quizás quieras
revisar la clase mx.rpc.http.mxml.HTTPService.

Ciro.

On 10 sep, 12:53, Susan Barraez <sbarr...@gmail.com> wrote:
> Guys a mi tambien se me presento la misma duda que menciono Leo
> anteriormente, como hago para establecer la navegacion??? se que no es
> necesario hacer multiples paginas como en html, pero me crea la duda de
> navegacion, como es el proceso?, como se pasan los parametros??? con los
> mismos procedimientos tradicionales en el mundo web...??? Me gustaria por
> favor me aclararan la duda.
>
> Saludos
>
> Susan Barraez
>
> 2009/9/10 Leo Valls <leova...@gmail.com>

Leo Valls

unread,
Sep 11, 2009, 10:57:33 AM9/11/09
to Flex AIR Venezuela
Disculpen que insista.. es que soy nuevo en el mundo del Flex y por
mas que intente con la ayuda que me han ofrecido hasta ahora.. no doy
pie con bola!!!
tendran un ejemplo de como funciona...
algo con que guiarme...

esto es lo que tengo.. es una ventana para loguearse con usuario y
contraseña, mi intencion es que al verificar el login y el pass accese
a la ventana home

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" width="100%" height="100%">
<mx:Style source="../src/clases/sapreweb.css"/>
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
import mx.rpc.http.mxml.HTTPService;

private function onResult(e:ResultEvent):void
{
if (e.result.status == true)
{
Alert.show("Bienvenido " + e.result.usuarionombre,"Éxito");
mx.rpc.http.mxml.HTTPService("home.mxml");
//PopUpManager.createPopUp(this, home, false);
}
else
{
Alert.show("No tiene acceso","Error");
}
}

private function Login():void
{
LoginService.send();
}

]]>
</mx:Script>

<mx:HTTPService id="LoginService" url="php/login.php"
showBusyCursor="true" method="POST" result="onResult(event)">
<mx:request xmlns="">
<login>{txtLogin.text}</login>
<clave>{txtClave.text}</clave>
</mx:request>
</mx:HTTPService>
<mx:Label x="119.5" y="147" text="Login:"/>
<mx:TextInput x="162.5" id="txtLogin" y="145" editable="true"
enabled="true"/>
<mx:Label x="119.5" y="175" text="Clave:"/>
<mx:TextInput x="162.5" y="173" id="txtClave"
displayAsPassword="true" enter="Login()" editable="true"
enabled="true"/>
<mx:Button x="260.5" y="212" label="Entrar" id="cmdLogin" click="Login
()"/>
<mx:Image x="10" y="10" source="Sapresoft web 3.png" width="141"
height="118"/>
<mx:Style source="clases/sapreweb.css"/>

</mx:Application>





entonces.... cual seria el comando para que habra la siguiente
ventana?

Juan

unread,
Sep 13, 2009, 3:29:13 AM9/13/09
to Flex AIR Venezuela
Saludos a todos y muchas gracias por animarse a responder.

Quiero comenzar mi aporte planteando mi opinión sobre lo que entiendo
como "navegación", pues al diseñar una aplicación Flex, debemos tener
presentes las diferencias entre aplicaciones web tradicionales y
aplicaciones RIA.

Como se sabe, la navegación en páginas web es el mecanismo en que se
dirige al usuario de una página (o vista) a otra. En el mundo web,
esto, generalmente y en sus formas más simples, se realiza
redireccionando las páginas mediante sus direcciones web (url's) una
vez ejecutada una acción, por lo que para cada página se tiene una
dirección distinta, o bien generando las páginas web dinámicamente en
el servidor mediante tecnologías de aplicaciones web, como lo son Php,
Jsp o Asp. En el mundo Flex, generalmente, esto es un poco distinto,
ya que al cargar la aplicación, en un principio, se descarga
(practicamente) la aplicación completa. Flex dispone de una gama de
componentes contenedores que son capaces de contener todas las vistas
(páginas) de la aplicación, permitiendo al usuario ir de una vista a
otra tal como lo hiciera en una aplicación de escritorio, sin recargas
de página ni redireccionamientos de url's. Entre los componentes
contenedores más utilizados puedo mencionar al TabNavigator, Accordion
y ViewStack. Sin embargo, Flex tambien puede manejar navegación entre
vistas mediante url's con algo denominado Deep Linking, permitiendo
que se registre un url distinto para cada vista de estos contenedores
mencionados y permitiendo igualmente, entre otras cosas, el uso de los
botones "Atras" y "Adelante" de los navegadores (web browsers).

Con todo lo anterior lo que persigo es hacer notar la diferencia entre
la navegación en aplicaciones web y aplicaciones RIA. Desde mi punto
de vista, implementar la navegación entre vistas como la conocemos en
las aplicaciones web sería complicar el diseño y desaprovechar las
ventajas que ofrecen las aplicaciones RIA al diseñarse, desarrollarse
y finalmente, comportarse como aplicaciones de escritorio. Sin
embargo, Flex da para eso y mucho más.

Ahora sí, a lo que vinimos.

Como se observa en varias de las respuestas, son varias las opciones
que existen para implementar una vista de autenticación. A modo de
resumen, aqui tienen una lista de algunas opciones que se mencionaron
arriba y las ordeno de menor a mayor por su grado de complejidad,
según mi criterio:

- Uso de estados (states)
- Uso de ViewStack
- Uso de modulos (Module)
- Uso de componentes personalizados (Custom Components)

Los estados se pueden entender como una colección de vistas de un
componente en la que sólo una será visible. Estos estados cambian a
criterio del programador mediante la propiedad currentState, a la cual
se asigna el nombre del estado que se desea visualizar. En los estados
se puede agregar
cualquier cantidad de componentes. Es la forma más simple de
implementar varias vistas en un mismo componente.

Los ViewStack son visualmente muy similares a los estados pero posee
ciertas ventajas con respecto a estos, como por ejemplo que permiten
ser manejados mediante sub indices en lugar de solo por nombres, las
vistas se cargan justo al momento en que son requeridas y se integran
de manera natural a otros componentes Flex. De hecho, el TabNavigator
es heredero de ViewStack. Un ejemplo, aqui:
http://flexexamples.blogspot.com/2009/09/flex-simple-navigation.html

Los módulos (Module) son sustancialmente distintos a los anteriores.
Estos son realmente aplicaciones independientes que pueden ser
cargadas y descargadas dentro de componentes contenedores, lo que
ofrece ventajas tales como una gran independencia de la aplicación
general, una gran flexibilidad al momento de diseñar aplicaciones
modulares o multiproposito, una gran comodidad al momento de hacer
mantenimiento a las aplicaciones Ria y permite optimizar el consumo de
la memoria utilizada por la aplicación, ya que estos se descargan de
la memoria cuando ya no se requiera su utilización. De esta forma, un
mismo evento podría ocacionar la descarga de un módulo en un
contenedor para cargar otro módulo distinto dentro del mismo
contenedor, simulando así la navegación. Un ejemplo, aqui:
http://livedocs.adobe.com/flex/3/html/help.html?content=modular_5.html

Los componentes personalizados son simplemente componentes hechos a la
medida, tanto en diseño como en comportamiento, en el que cada vista
se diseña como un componente y se instancian cuando se requiera y se
retiran del contenedor cuando ya no sean necesarios. Pueden contener
contenedores, módulos, eventos personalizados y cualquier otro tipo de
componente Flex.

Como sé que los autores de las dudas estan comenzando a desarrollar en
Flex, preparé un ejemplito para ilustrar de la manera más simple que
pude, el manejo de estados. Si resulta muy simple para lo que desean
hacer, escriban de nuevo y seguiremos resolviendo las dudas. La
ubicación del ejemplo:

http://groups.google.com/group/flex-air-ve/web/EjemploDeLogin.zip

Saludos. Juan Manrique.

Ciro Duran

unread,
Sep 13, 2009, 10:30:30 AM9/13/09
to Flex AIR Venezuela
Esta respuesta debería ir a un FAQ :-)
> ...
>
> leer más »

alfredogarc

unread,
Sep 14, 2009, 4:26:46 PM9/14/09
to Flex AIR Venezuela
Buenas tardes....

Ya hice mis pruebas con los módulos y todo salió bien.

Ahora mi duda es esta.

Tengo mi mxml principal, application, el cual se loguea el usuario y
luego de ser validado se manda a una pantalla principal "home.mxml" la
cual es un módulo. Todo perfecto, pero esta pantalla sale montada en
la misma login.mxml. Como hago para que solo aparezca el módulo en
cuestion "home.mxml" como nueva pantalla de trabajo??

Gracias..




Leo Valls

unread,
Sep 16, 2009, 11:19:39 AM9/16/09
to Flex AIR Venezuela
Gracias por la respuesta Juan... bastante didactica...
Estoy trabajando con ello a ver como me va!!!

On 13 sep, 03:29, Juan <juca...@gmail.com> wrote:
> ...
>
> leer más »

Juan

unread,
Sep 16, 2009, 10:01:11 PM9/16/09
to Flex AIR Venezuela
Saludos Alfredo.

Si pudieras poner las líneas del código donde haces el trabajo con los
módulos, tal vez podríamos ayudarte a conseguir el problema con más
precisión.

Saludos. Juan Manrique.
> ...
>
> leer más »

alfredogarc

unread,
Sep 17, 2009, 10:43:22 AM9/17/09
to Flex AIR Venezuela
Buenos días Juán. Tengo este código en el application login.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" width="100%" height="100%">
<mx:ModuleLoader id="ModLogin" url="home.swf" visible="false"/>
<mx:Style source="../src/clases/sapreweb.css"/>
<mx:Script>
<![CDATA[
//import mx.modules.ModuleLoader;
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
import mx.modules.*;

private function onResult(e:ResultEvent):void
{
if (e.result.status == true)
{
Alert.show("Bienvenido " + e.result.usuarionombre,"Éxito");
ModLogin.visible = true;
}
else
{
Alert.show("No tiene acceso","Error");
}
}

public function CrearModulo(m:ModuleLoader, s:String):void
{
if (!m.url)
{
m.url = s;
return;
}
m.loadModule();
}

public function RemoverModulo(m:ModuleLoader):void
{
m.unloadModule();
}

private function Login():void
{
LoginService.send();
}

]]>
</mx:Script>

<mx:HTTPService id="LoginService" url="php/login.php"
showBusyCursor="true" method="POST" result="onResult(event)">
<mx:request xmlns="">
<login>{txtLogin.text}</login>
<clave>{txtClave.text}</clave>
</mx:request>
</mx:HTTPService>
<mx:Label x="119.5" y="147" text="Login:"/>
<mx:TextInput x="162.5" id="txtLogin" y="145" editable="true"
enabled="true"/>
<mx:Label x="119.5" y="175" text="Clave:"/>
<mx:TextInput x="162.5" y="173" id="txtClave"
displayAsPassword="true" enter="Login()" editable="true"
enabled="true"/>
<mx:Button x="260.5" y="212" label="Entrar" id="cmdLogin" click="Login
()"/>
<mx:Image x="10" y="10" source="Sapresoft web 3.png" width="141"
height="118"/>
<mx:Style source="clases/sapreweb.css"/>

</mx:Application>








Y en el home.mxml, el cual es un módulo tengo esto, solo un botón:

<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
width="400" height="300">
<mx:Button x="209" y="57" label="Button"/>
</mx:Module>




El problema es que cuando se loguea el usuario, llamó exitosamente el
módulo, pero este se monta sobre la ventana de login y no sale sola
como pantalla nueva... ¿Cómo hago esto?

Gracias

Juan

unread,
Sep 21, 2009, 7:16:21 PM9/21/09
to Flex AIR Venezuela
Saludos Alfredo. Gracias por agregar el código.

A simple vista se puede indentificar el más importante de los
problemas y que es el motivo de tu pregunta. El hecho de que el modulo
aparezca sobre o al lado del resto de los componentes visuales es
porque no estas trabajando con contenedores, es decir, no diseñaste ni
estructuraste tu vista en función de contenedores. Lo primero que
debes saber al trabajar con módulos usando ModuleLoader, es que este
objeto es un contenedor, lo que significa que en el puedes agregar y
quitar objetos hijos (especificamente módulos, en este caso). Si te
fijas en tu código MXML, agregaste un ModuleLoader al mismo nivel que
agregaste el resto de los componentes visuales, por lo tanto, el
módulo que cargues mediante el ModuleLoader que llamaste "ModLogin" se
verá acompañado del resto de los componente visuales. Aún haciendo
visible o invisible el ModuleLoader, los componentes como los Label,
TextInput y Button seguirán siendo visibles. Lo que te recomiendo es
que leas un poco más sobre diseño de vistas basado en contenedores
para que tengas una nueva perspectiva sobre cómo agrupar varios
componentes dentro de un mismo contexto para que puedas cambiar tu
vista de manera más conveniente y más fácil, a la vez que puedes
configurar comportamientos coherentes en la vista. Sobre contenedores
puedes leer aquí:
http://livedocs.adobe.com/flex/3/html/help.html

De todas formas, hice unas modificaciones a tu código para que puedas
ver una de tantas formas de solucionar tu problema. Una de las
modificaciones más importantes que hice a tu código es que llevé los
componentes involucrados en el proceso de autenticación o login a un
módulo. Por lo tanto, ahora tienes 2 módulos dentro de tu aplicación,
los cuales serán cargados y descargados según sea necesario. La
aplicación principal quedaría funcionando como contenedor del
ModuleLoader y ademas como el coordinador que decide qué módulo se
carga o se descarga.

El ejemplo esta aquí: http://groups.google.com/group/flex-air-ve/web/DudaModuloFlexairve.zip?hl=es

Espero que encuentres útil esta respuesta o de lo contrario, aquí
seguimos.

Saludos. Juan Manrique.
Message has been deleted

Juan

unread,
Sep 23, 2009, 4:36:19 PM9/23/09
to Flex AIR Venezuela
Saludos.

No tengo ni idea de por qué la respuesta de Alfredo no se vió
reflejada en esta discusión, a pesar de que a todos nos llegó al
correo. Así que reenvío la respuesta de Alfredo:


Buenos días Juan. Espero estés bien.

Entendí el código, pero tengo un problema con el mismo.

en la función ModuloLogin las variables strLogin y strClave tienen
almacenado correctamente los datos registrados en las cajas de texto
respectivas, pero, en el código del HTTPService




// en este metodo la aplicacion decide que
accion se llevara a cabo
// dependiendo de que modulo la invoque.
public function ModuloLogin(modulo :
Module):void
{
// si el modulo que invoca es
ModuloLogin
if (modulo.className == "login")
{
// se traen a la aplicacion el
login y la clave desde
// el modulo ModuloLogin y se
guarda en variables globales
// que puedan estar en binding.
strLogin = (modulo as
login).txtLogin.text;
strClave = (modulo as
login).txtClave.text;
Alert.show(strLogin +
strClave);
// se invoca el servicio de
autenticacion
LoginService.send();
}
else
// si el modulo que invoca es Modulo
if (modulo.className == "home")
{
// se quita el modulo actual
(Modulo)
RemoverModulo(ModLogin);
// se agrega nuevamente el
modulo de login para simular
// un cierre de sesion.
CrearModulo
(ModLogin,"Home.swf");
}
}

Aquí como inidiqué arriba, no se tiene el valor de las variables
anteriormente registradas en la función que llama el HTTPService.
Mostré mediante un Alert.show(strLogin + strClave); en la función y
allí si se tiene los valores correctamente registrados, pero en el
HTTService no se envía dicha información.




<mx:HTTPService
id="LoginService"
url="php/login.php"
showBusyCursor="true"
method="POST" result="onResult(event)">
<mx:request xmlns="">

<!-- las variables son Bindable para que se
puedan actualizarse en cualquier
momento -->
<login>{strLogin}</login>
<clave>{strClave}</clave>
</mx:request>
</mx:HTTPService>




Qué está ocurriendo, gracias
> El ejemplo esta aquí:http://groups.google.com/group/flex-air-ve/web/DudaModuloFlexairve.zi...
> > Gracias- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

Juan

unread,
Sep 23, 2009, 4:42:01 PM9/23/09
to Flex AIR Venezuela
Saludos Alfredo.

Me gustaría ver las líneas de código donde declaras las variables
"strLogin" y "strClave", así como los módulos en caso de que los hayas
modificado. Si puedes enviarme el proyecto completo como lo envié yo,
mucho mejor para poder detectar más rápido el problema.

Saludos. Juan Manrique.
> > - Mostrar texto de la cita -- Ocultar texto de la cita -

Leo Valls

unread,
Oct 7, 2009, 9:44:02 AM10/7/09
to Flex AIR Venezuela
Hola amigos... hace cierto tiempo escribi un mensaje solicitando ayuda
para resolver un inconveniente al intentar correr una aplicación... el
error era este:

" Flex Builder cannot locate the requiered version of flash player.
You might need to install flash player 9 or reinstal flex builder.
Do you want to try to run your application whith the current
version?"

entre los procesos realizados para intentar solvetar el error
probamos:
reinstalando flash player
instalar otra version del flash player
reinstalar flex builder
se reinstalo windows (como opción desesperada)
y ninguna funciono...

logramos solventar la falla fue indicando la ruta exacta del navegador
con el que se trabaja.
por lo que asumimos que el flexbuilder no conseguia la ruta del
navegador.
> ...
>
> leer más »

Juan Carlos

unread,
Aug 14, 2010, 12:42:00 AM8/14/10
to flex-...@googlegroups.com
Es grato poder ayudarte con tu doctorado desde FlexAIRVe.

Aprovecho la oportunidad para invitar a toda la comunidad FlexAIRVe a suscribirse y participar en nuestro Adobe User Group de Venezuela. Hace pocos meses que Adobe nos aprobó el grupo y deseamos consolidar una comunidad donde podamos compartir conocimientos sobre temas como diseño web, desarrollo de software, edición audiovisual, etc., por mencionar unos pocos y sólo podremos lograrlo con la ayuda de todos ustedes. Estamos planificando actividades muy interesantes que serán realizadas en los próximos meses y esperamos contar con la participación de toda la comunidad FlexAIRVe. Abajo les dejo nuestros enlaces más importantes. Saludos. Juan Manrique.

Blog oficial en Adobe (suscribirse aquí): http://augvenezuela.groups.adobe.com/
Blog del AUG Venezuela: http://www.augvenezuela.com/

2010/08/13 Rodolfo Vegas <vegas...@gmail.com>

Excelente, muchisimas fgracias, tu aporte es grande a los que estamos
apenas iniciando en flex, otra vez gracias.

2009/10/7 Leo Valls <leov...@gmail.com>

--~--~---------~--~----~------------~-------~--~----~
Has recibido este mensaje porque estás suscrito a Grupo "Flex AIR Venezuela" de Grupos de Google.
 Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a flex-...@googlegroups.com
 Para anular la suscripción a este grupo, envía un mensaje a flex-air-ve...@googlegroups.com
 Para obtener más opciones, visita este grupo en http://groups.google.com/group/flex-air-ve?hl=es.

-~----------~----~----~----~------~----~------~--~---



Reply all
Reply to author
Forward
0 new messages