Envio de email con adjuntos en AS3 y PHP

Envio de email con adjuntos en AS3 y PHP

Etiquetas: FileReference FileFilter URLRequest

Este ejemplo muestra como hacer un formulario en Flash (Actionscript 3.0) con envio de adjuntos.

El esquema básico es que hacemos una subida normal con FileReference, y en el URLRequest de la subida incluimos las variables que queramos adjuntar en el formulario:

  1.  
  2. var request:URLRequest = new URLRequest(url);
  3. request.method = URLRequestMethod.POST;
  4. request.data = new URLVariables();
  5. request.data.nombre = Nombre_txt.text;
  6. request.data.destinatario = Destinatario_txt.text;	
  7. subidor.upload(request);
  8.  

Estas variables las recogemos después en el PHP con el nombre que les hayamos puesto con:

  1.  
  2. $_REQUEST[nombre]
  3.  

En el php tenemos el código típico de una subida, y una vez terminada pasamos a montar el correo electrónico.

Dejo los fuentes con el fla, la clase Formulario, y el php para la subida.

El código php es una versión adaptada del que podéis encontrar en esta página

Como crear un menú dinámico con Actionscript 3.0 y XML

Como crear un menú dinámico con Actionscript 3.0 y XML

Etiquetas: URLLoader URLRequest currentTarget


Deprecated: Function split() is deprecated in /home/km100runner/esedeerre.com/buscador.php on line 66

Como crear un menú dinámico con Actionscript 3.0 y XML

Este ejemplo intenta mostrar una forma básica de hacer un menú dinámico con Flash y XML. La misma teoria que se aplica aquí para crear los elementos del menú, se puede aplicar en la creación, por ejemplo, de una galeria de imágenes o videos.

La idea es hacer un menú cuyos elementos se crean a partir de los nodos de un XML. De esta forma se hace más sencillo el mantenimiento del menú, ya que por ejemplo para añadir un botón solo habría que añadir un nuevo nodo con los contenidos necesarios. El XML que vamos a utilizar es este:

  1.  
  2. <?xml version="1.0" encoding="utf-8" ?>
  3. <data>
  4. 	<elementos>
  5. 		<elemento>
  6. 			<titulo>Google</titulo>
  7. 			<enlace>http://www.google.com</enlace>
  8. 		</elemento>
  9. 		<elemento>
  10. 			<titulo>Yahoo</titulo>
  11. 			<enlace>http://www.yahoo.com</enlace>
  12. 		</elemento>
  13. 		<elemento>
  14. 			<titulo>Altavista</titulo>
  15. 			<enlace>http://www.altavista.com</enlace>
  16. 		</elemento>
  17. 		<elemento>
  18. 			<titulo>Lycos</titulo>
  19. 			<enlace>http://www.lycos.com</enlace>
  20. 		</elemento>
  21. 	</elementos>
  22. </data>
  23.  

Vemos que cada elemento tiene un título, que vamos a poner en el texto del botón, y un enlace, que es la url que vamos a cargar al hacer click en el botón.

Una vez que tenemos el XML, vamos a flash y creamos el botón que vamos a utilizar para crear el menú. En este caso es un fondo blanco con un campo de texto dinámico llamado "Texto_txt". Una vez creado pulsamos con el botón derecho en el símbolo que tenemos en la biblioteca y seleccionamos "Vinculación". Tenemos que asociar el botón a la clase ElementoMenu, que es el nombre de clase que vamos a utilizar para crear los botones.

Vinculacion FLash Actionscript

Ahora vamos a cargar el XML. Creamos un URLLoader, añadimos los eventos, y creamos las funciones de carga y error. Se puede ver el proceso de carga más detallado en el tutorial de carga de XML en Actionscript 3.0 . Una vez cargado el XML y almacenado en la variable datos, llamamos a la función montar, donde vamos a crear el menú. Tenemos que recorrer todos los nodos, y crear un botón por cada nodo. Para recorrer los elementos con la estructura que hemos definido en el XML, tenemos que utilizar un for con este aspecto:

  1.  
  2. for (var i:uint = 0; i < datos.elementos.elemento.length(); i++) {
  3.  
  4. }
  5.  

En cada "vuelta" del for, vamos a crear un botón, rellenamos su campo Texto_txt con el nodo titulo, y almacenamos en una variable dentro del botón el valos del nodo enlace. Lo colocamos en "y" descendente según avanzamos para que salgan uno debajo de otro, y por último le añadimos un evento click que llama a la función navegar:

  1.  
  2. boton = new ElementoMenu();
  3. boton.Texto_txt.text = datos.elementos.elemento[i].titulo;
  4. boton.enlace = datos.elementos.elemento[i].enlace;
  5. boton.y = i * 25
  6. boton.buttonMode = true;
  7. boton.mouseChildren = false;
  8. boton.addEventListener(MouseEvent.CLICK, navegar);
  9. addChild(boton);
  10.  

Ahora, cada vez que hagamos click en un botón, se ejecutará la función navegar. En esta función recogemos el valor de la variable que hemos almacenado en enlace dentro del botón, por medio de currentTarget:

  1.  
  2. private function navegar(e:MouseEvent):void {
  3. 	navigateToURL(new URLRequest(e.currentTarget.enlace), "_blank");
  4. }

Espero haberlo explicado de una manera fácil. Para cualquier duda podéis utilizar los comentarios.

Actionscript 3.0: Ejemplo básico para cargar imágenes

Actionscript 3.0: Ejemplo básico para cargar imágenes

Etiquetas: Loader URLRequest contentLoaderInfo addEventListener

Uno de los primeros post que escribí, fue "Carga de imágenes y SWF en AS3 con Loader" . Básicamente era una explicación de los diferentes eventos disponibles para trabajar con Loader, y de como añadirlos al objeto. Esta es una explicación más "sencilla" de como cargar una imagen, o un SWF en Actionscript.

Lo primero que tenemos que hacer es crear un objeto tipo Loader. Los Loader son los encargados de cargar imágenes (JPG, PNG o GIF) y SWFs en Flash. Esto lo hacemos así:

  1.  
  2.   var loader:Loader = new Loader();
  3.  

Ahora que tenemos un "cargador", hay que pedirle que informe de los eventos de la carga. Hay muchos eventos, pero los principales son tres:

-Error al cargar la imagen (no se encuentra el archivo)

-Progreso de la imagen (nos informa del progreso de la carga)

-Imagen cargada (la imagen ya se ha cargado y podemos trabajar con ella).

Para que el Loader nos informe de estos eventos, tenemos que asociar cada uno a una función. Es decir, debemos decirle: "si la carga falla, ejecuta esta función, y si se carga, ejecuta esta". Esta charla, traducida a Actionscript 3.0 es:

  1.  
  2. loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imagenCargada);
  3. loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, imagenError);
  4. loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imagenProgreso);
  5.  

Lo que hemos hecho es "añadir listener de los eventos". Como se puede ver, cada evento vá asociado a una función. El evento Event.COMPLETE, por ejemplo, está asociado a la función "imagenCargada". Estas funciones suelen tener esta apariencia:

  1.  private function imagenCargada(e:Event):void {
  2.   trace("Cargada: " + e);
  3.   addChild(e.target.content);
  4.   }
  5.  
  6.   private function imagenError(e:IOErrorEvent):void {
  7.   trace("Error: " + e);
  8.   }
  9.  
  10.   private function imagenProgreso(e:ProgressEvent):void {
  11.   trace("Cargados=" + e.bytesLoaded + " Total=" + e.bytesTotal);
  12.   } 

Como se puede ver, cada función recibe un parámetro (al que hemos llamado "e", en este caso) que no servirá para obtener información del evento. Por ejemplo, cuando pongamos a cargar la foto, se comenzará a ejecutar periódicamente la función imagenProgreso hasta que termine la carga. Cada vez que Flash ejecute esa función, pasará como parámetro un "e distinto", que contendrá información sobre el progreso de carga en los atributos bytesLoaded y bytesTotal del evento.

Una vez que tenemos añadidos los eventos, tenemos que cargar la imagen mediante la función load:

  1.  
  2.   loader.load( new URLRequest(url));
  3.  

Y listo. El loader que hemos creado se encargará de ejecutar las funciones asignadas a los eventos que le hemos asociado. El evento más importante es Event.COMPLETE, que ejecuta la función imagenCargada cuando el archivo termina de cargarse. Podemos acceder al archivo dentro del parámetro e.target.content den evento.

El código completo, sería el siguiente:

Flash: Imágenes rotativas en AS3

Flash: Imágenes rotativas en AS3

Etiquetas: setTimeout removeChild addEventListener URLRequest Loader


Deprecated: Function split() is deprecated in /home/km100runner/esedeerre.com/buscador.php on line 66

Flash: Imágenes rotativas en AS3

Esta clase, explica paso a paso como hacer en AS3 una carga de imágenes que van rotando cada cierto tiempo. Para ello se almacenan las urls en una matriz y se van cargando los archivos cada cierto tiempo.
Enlace en Actionscript 3.0

Enlace en Actionscript 3.0

Etiquetas: navigateToURL URLVariables URLRequest getURL

El equivalente a getURL en Actionscript 3.0 es navigateToURL. Este método permite pasar variables con la url, por medio del atributo data de URLRequest, y elegir la ventana en la que queremos abrir el enlace ("_blank", "_self", "_parent" o "_top").
Clase para hacer precargas en Actionscript 3.0

Clase para hacer precargas en Actionscript 3.0

Etiquetas: Loader MovieClip URLRequest

Esta es una clase que estoy utilizando bastante en mis últimos trabajos. Es bastante sencilla, pero se puede modificar fácilmente para añadir otros comportamientos. La clase tiene las siguientes function públicas:

-Función constructora: recibe como parámetro el clip que se va a mostrar durante la precarga. La clase está preparada para que este clip tenga un campo de texto llamado Texto_txt, que será donde se muestre el progreso de carga, y una animación de 100 fotogramas.

-Función cargar: recibe como parametro una url (String) y el clip donde vamos a cargar el contenido de la url (MovieClip).
Envio del e-mails con Actionscript 3.0 y PHP

Envio del e-mails con Actionscript 3.0 y PHP

Etiquetas: URLRequest URLLoader URLVariables

Este ejemplo muestra como enviar un correo electrónico desde flash y AS3 , por medio de php. Para que funcione debemos tener un php subido en nuestro servidor con el siguiente código:

  1.  
  2. 	$email = $_POST['email'];
  3. 	$asunto = $_POST['asunto'];
  4. 	$cuerpo = $_POST['cuerpo'];
  5. 	mail("$email","$asunto","$cuerpo");
  6. 	echo "resultado=Mensaje enviado";
  7.  


Podemos pasar los datos necesarios a este fichero desde Flash de la siguiente forma:
Recorrer XML en AS3

Recorrer XML en AS3

Etiquetas: XML URLLoader URLRequest elements

El siguiente código carga un XML y recorre sus nodos y atributos imprimiendolos en pantalla.

El XML que he utilizado es el siguiente:

  1.  
  2. <Discos>
  3. 	<Disco puntuacion="10">
  4. 		<grupo id="20">The Knife</grupo>
  5. 		<titulo>Deep Cuts</titulo>
  6. 	</Disco>
  7. 	<Disco puntuacion="7">
  8. 		<grupo id="21">Jose Gonzalez</grupo>
  9. 		<titulo>Veneer</titulo>
  10. 	</Disco>
  11. </Discos>
  12.  

Y el código AS:

Cargar archivos de texto y XML con URLLoader

Cargar archivos de texto y XML con URLLoader

Etiquetas: URLLoader URLRequest load

El código de este ejemplo carga un XML e informa de los eventos de carga. Para cargar imágenes y SWF hay que utilizar Loader en lugar de URLLoader.
Carga de imágenes y SWF en AS3 con Loader

Carga de imágenes y SWF en AS3 con Loader

Etiquetas: Loader URLRequest contentLoaderInfo addEventListener load

El código de este ejemplo sirve para cargar una imagen (jpg, gif o png) o swf controlando el proceso de carga. Para cargar otro tipo de archivos (por ejemplo XML o texto), hay que utilizar URLLoader.
Hacer un sendAndLoad en Actionscript 3.0

Hacer un sendAndLoad en Actionscript 3.0

Etiquetas: URLRequest URLVariables sendToURL URLLoader method load dataFormat

sendAndLoad permitía enviar información a un fichero externo (PHP, ASP o similar) y recibir después información de este. En AS3 ya no se puede utilizar esta función, pero en su lugar se puede utilizar el siguiente código (en el ejemplo envio dos numeros a un PHP, que los sumará y devolverá el resultado). El php puede ser como este:

  1.  
  2. <?php
  3. 	$numero1 = htmlentities($_POST[numero1]);
  4. 	$numero2 = htmlentities($_POST[numero2]);
  5. 	$suma = $numero1 + $numero2;
  6. 	echo "suma=" . $suma;
  7. ?>
  8.  

Y el Actionscript:

ActionScript 3.0: Subir archivos con FileReference y PHP

ActionScript 3.0: Subir archivos con FileReference y PHP

Etiquetas: FileFilter FileReference URLRequest browse upload

La clase File Reference de AS3 es bastante parecida a la de AS2. Además el ejemplo de la ayuda de Flash es bastante sencillo de entender.El código que pongo a continuación esta hecho a partir de dicho ejemplo, al que he añadido algunos comentarios para explicarlo. Para utilizarlo Hay que tener en el escenario un boton llamado "Examinar_bt" y un campo de texto dinámico llamado "Estado_txt".