Dec 02

He tenido la posibilidad de participar en la programación y estructuración de la navegación de la siguiente lista de juegos, en el blog he publicado algunos trucos y consejos para realizar estos juegos, sin embargo si alguien esta interesado en saber como se hizo alguna funcionalidad, los invito a que posteen sus dudas para compartilas con los demás.

Nota: para probar el juego click en la imagen.



Escrito por @lasmovies \\ tags: , , , , , , , ,

Jul 08

Cuando necesitamos asignar un password a una parte de la palícula flash.

Primero asignamos un label a cada seccion protegida, el label será el password de la sección, luego utilizamos el siguiente código para validar, el password que el usuario ingresa para redirigirlo al frame donde esta el nivel.

En la primera escena ponemos:

Actionscript:
  1. stop();
  2.  
  3. btns.b1.pass = "xrgy456";
  4. btns.b2.pass = "gtyur34";
  5. btns.b3.pass = "nhy4567";
  6. btns.b4.pass = "hgtr456";
  7. btns.b5.pass = "dfg23sd";
  8. btns.b6.pass = "88877cc";
  9. btns.b7.pass = "vfrtyu87";
  10. btns.b8.pass = "12398745";
  11.  
  12. for(var i=1;i<9;i++)
  13. {
  14.     mc = eval("btns.b"+i);
  15.    
  16.     mc.onPress = function(){
  17.        
  18.         frame = p.text;
  19.        
  20.         if(frame==this.pass)
  21.         {
  22.             _root.gotoAndStop(frame);      
  23.         }
  24.         else
  25.         {
  26.             trace("Password incorrecto");
  27.         }
  28.     }
  29. }

En el escenario ponemos 8 botones, llamados b1, b2, ... b8 y un campo de introducción de texto.

Para probar es necesario utilizar los siguientes passwords para ir a la escena determinada.

CODE:
  1. Nivel 1: xrgy456
  2. Nivel 2: gtyur34
  3. Nivel 3: nhy4567
  4. Nivel 4: hgtr456
  5. Nivel 5: dfg23sd
  6. Nivel 6: 88877cc
  7. Nivel 7: vfrtyu87
  8. Nivel 8: 12398745

Ejemplo funcionando:

This movie requires Flash Player 8

Escrito por @lasmovies \\ tags: , , , , ,

Jul 02


En muchas ocasiones, cuando una película flash, carga información dinámica, por ejemplo titulares, articulos, etc. Vemos que muchas veces cuando esta información contiene imágenes, la carga del texto y las imágenes no sucede inmediatamente, pues las imágenes tardan más tiempo en mostrarse.

Teniendo en cuenta esto, realicé una función javascript, la cual me permite precargar todas las imágenes que voy a necesitar al mostrar en la página.

Es importante notar, que el mayor desempeño de esta funcionalidad se aprecia cuando se navega por páginas, de tal forma que cuando el usuario esta viendo la info inicial, el contenido de las demás secciones (páginas), se precarga.

Este procedimiento se utiliza también, cuando conocemos la ruta de imágenes que vamos a cargar previamente.

Para realizar la precarga necesitamos.

Función javascript de precarga de imagenes.

JavaScript:
  1. var lista_imagenes = new Array();
  2.  
  3. function preloadImage(ruta){
  4.  
  5. //by lasmovies@gmail.com
  6. img = new Image();
  7. img.src = ruta;
  8. lista_imagenes.push(img);
  9.  
  10. }

Luego desde el flash, llamamos la función así:

Actionscript:
  1. import flash.external.*;
  2. ExternalInterface.call("preloadImage","imgages/img1.jpg");//Precarga la imágen.

Lo anterior lo podemos hacer, por ejemplo en el home de nuestro sitio, luego cuando vamos a la sección donde cargamos la imagen, esta aprecera más rápido, dependiendo del tiempo que el usuario tomé en ir a la sección y del tamaño de la imagen o imágenes precargadas.

Actionscript:
  1. loadMovie("imgages/img1.jpg",cont);

Nota: Este proceso de precarga, solo funciona con imágenes. Y estoy pendiente por investigar si se puede utilizar con el objeto MovieclipLoader, ya que este por lo general se salta la cache.*

*: Por confirmar.

Leer también:

extraño comportamiento de la cache
Carga de swf e imágenes

En este último link, esta la posibilidad de saltarse la cache así:

Actionscript:
  1. precargador_mcl.loadClip("Pelicula.swf"+nocache, caja_mc);

Sin embargo este otro, deja en duda si MovieclipLoader usa cache.

usa cache?

Ok, este tema, esta en investigación, agradezco a alguien que nos pueda ayudar a aclarar el tema.

Muchas gracias.

Escrito por @lasmovies \\ tags: , , , , , , , , , ,

Jul 02


A continuación una lista de trucos que se deben utilizar para leer archivos xml desde flash, para evitar problemas de
interpretación de dato, problemas con cache, codificaciones, etc.

  •  Crear una estructura de navegación teniendo en cuenta que después hay que realizar un algoritmo que recorra la estructura, personalmente no recomiendo tener muchos niveles de profundidad, y utilizar atributos para evitar tener que crear niveles adicionales. Si utilizamos atributos, actualizar el archivo xml luego de realizar el algoritmo de navegación no afecta mucho la programación que ya hemos realizado.

Esta recomendación aplica para programación con lectura de xml en as 2, ya que la lectura desde as3, es mucho más fácil de realizar. Acá se puede ver un excelente tutorial.

  • Otro asunto con el que nos podemos encontrar, tener que leer datos que contienen carácteres con acentos (español) , para poder interpretar bien estos archivos desde flash, es necesario tener en cuenta varias cosas:

El archivo xml, se recomienda que este codificado con utf-8, para procurar que los carácteres se interpreten correctamente.

También es muy importante, poner la información de los tags xml, dentro de un campo cdata, así:

<![CDATA[información con acentos aquí]]> , ver más info acá.

Es recomendable utilizar dentro de flash una estructura similar a la siguiente para realizar la lectura de los xml:

Actionscript:
  1. System.useCodePage = true;
  2. //^ Le decimos a flash que activé el codePage, esto es para que interprete bien los caracteres especiales.
  3.  
  4. function okSend()
  5. {
  6.  
  7. sal_registro = new LoadVars();
  8. int_respuesta = new XML();
  9. int_respuesta.ignoreWhite = true;//Con esta línea evitamos los espacios y garantizamos una lectura correcta
  10. int_respuesta.onLoad = function(success:Boolean) {
  11. if (success) {
  12. // error=false todo bien
  13. if(this.error.charAt(0)=='f')
  14. {
  15.  
  16. }
  17. else
  18. {
  19.  
  20. }
  21. } else {
  22.  
  23. }
  24. };
  25.  
  26. url = "script.php";
  27. sal_registro.nombre = t1.text;
  28. sal_registro.mail = t2.text;
  29. sal_registro.rand = Math.random();
  30. sal_registro.sendAndLoad(url,int_respuesta,"POST");
  31. }

Es importante resaltar:

Actionscript:
  1. System.useCodePage = true;

Esta instrucción la empleo la mayoría de veces, pues casí siempre realizo lectura de datos con ñs, tíldes, etc. Además la pongo por precaución aunque el proyecto parezca no tener palabras con acentos.

Actionscript:
  1. int_respuesta.ignoreWhite = true;

Esta instrucción la utilizó principalmente, cuando leo datos desde un serlvet o script que genera el archivo xml dinámicamente.

Actionscript:
  1. sal_registro.rand = Math.random();

Esta línea es escencial, para los casos donde necesitamos tener el archivo xml actualizado en todo momento. Porque he tenido inconvenientes en aplicaciones que actualizan información constantemente desde un xml, pero resulta que estos archivos quedan en cache y si hacemos una petición, este toma el archivo directamente de la cache y no desde el servidor.

Por tanto al enviar un parámetro adicional con un número aleatorio, este siempre va a pedir los datos nuevos del servidor.

Cuando programamos interactividad con el servidor, es importante, leer la estructura xml, cruda, es decir evitar el uso de encabezados xml, o si los necesitamos poner, tener en cuenta que se codifiqué con utf-8.

Por útlimo, les dejo el programa gratuito que empleo para mirar la información de un archivo xml, este me permite identar automaticamente un archivo entre otros benecifios.

Se llama Xml Marker, se puede descargar aquí.

Escrito por @lasmovies \\ tags: , , , , , , ,