Miami, Blog
15
Feb

En este post abordare el tema de las librerias externas y como trabajar con ellas. Como primera cosa deben estar familiarizados con el Control de versiones. Yo lo explicare con mis propias palabras, pero ya se habran dado cuenta de que no soy muy bueno redactando, por lo que sere muy breve y practico.

El Control de versiones se trata de gestionar los cambios que se llevan acabo en el codigo de fuente, imagenes, o simplemente documentos de nuestras aplicaciones. La idea es poder manejar distintas versiones de "algo" de una manera simple (no estar guardando la carpeta para tener una version vieja). Esto consiste basicamente en un repositorio donde estan todos los archivos de tu proyecto. Y tu accedes a el con ciertas herramientas. Si modificas algo debes sincronizar tus archivos con el repositorio, para que cualquier otro usuario del repositorio pueda ver los cambios. La gracia de esto es que es muy facil revertir los cambios en caso de cualquier error, ya que cada vez que sincronizas los archivos en el repositorio se guarda el historial para cada archivo. Ademas es la manera optima para trabajar en equipo (solo tambien). Ya que permite que muchos programadores trabajen sobre el mismo codigo sin pasar a llevar los cambios de los otros, esto ya lo explico mas adelante, por ahora dejemoslo hasta ahi. Los software de control de versiones ofrecen muchas otras opciones tales como crear tags (marcar un estado actual de la aplicacion, como una version para volver facilmente a ella), crear branches (una copia del repositorio donde puedes hacer pruebas, que si te gustan puedes volver a unir con el hilo principal), y bueno muchas otras cosas.

Como primera cosa vamos a ver algunos terminos que se usan tipicamente, para poder usarlos de aqui en adelante, los terminos siempre los use en ingles, asi que los pondre en ese idioma.

  • Repositorio: El repositorio es el lugar en el que se almacenan los datos actualizados e históricos, a menudo en un servidor.
  • Checkout / Clone: Bajar una nueva copia del repositorio. Este es el primer paso para obtener codigo de terceros o el suyo propio.
  • Commit: Un commit es subir al repositorios nuevos cambios.
  • Update: Se refiere q traer los ultimos cambios en el repositorio a tu ambiente de trabajo.
  • Branch:Un módulo puede ser branched o bifurcado en un momento de tiempo de forma que, desde ese momento en adelante, dos copias de esos ficheros puedan ser desarrolladas a diferentes velocidades o de diferentes formas, de modo independiente.
  • Trunk: Es la linea principal del proyecto, por asi decirlo el branch principal... ojo que no es branch :P

Bueno vistos estos terminos podemos empezar a ver algo mas especifico. En este articulo voy a revisar las 2 opciones mas comunes para trabajar con Control de versiones, estas son: Subversion y Github.

Subversion

Para trabajar con Subversion existen varias opciones de software, yo personalmente uso TortoiseSVN, que es el que mas me acomoda. Cabe mencionar que solo esta disponible para PC, lo pueden DESCARGAR DESDE AQUI, con respecto a Mac no tengo experiencia, pero e buscado algunas alternativas en google y me encontre con este sitio, al preguntar por ahi cual seria la mejor alternativa para Mac xleon me comenta lo siguiente:

Sin duda "Versions" (es de pago). Aunque hay una aplicación de Subversion que se integra en el Finder de Mac. Lo puedes descargar en la web de Tigris (la misma del tortoise). Pero Versions es mil veces mejor.

Si alguien conoce algun programa mejor para mac, porfavor comente y cuentenos a todos cual es :).
Bueno como primer paso, antes de seguir leyendo deberian poner a bajar e instalar un cliente de Subversion ya sea para PC o Mac. Desde ahora en adelante yo seguire mi articulo refiriendome a TortoiseSVN para PC.
Cuando terminen con la instalacion, hagan click derecho sobre una carpeta o el escritorio o cualquier parte, veran que en el menu hay nuevas opciones, justamente las del TortoiseSVN, veran algo como esto.

De este menu la opcion mas importante por ahora es la que dice SVN Checkout, la cual nos permitira bajar un repositorio. Por lo que sera la primera cosa que haremos.

Descargando una libreria externa

Esto es muy sencillo, creen una carpeta con cualquier nombre, por ejemplo "papervision", le dan click derecho a la carpeta y seleccionan SVN Checkout. Se abrira la siguiente ventana del Tortoise, introducen la direccion al repositorio que quieran bajar y luego apretan aceptar. Para este ejemplo nos bajaremos Papervision3D, un motor de 3D para flash.
svn
La url que deben poner en la ventana del Tortoise es: http://papervision3d.googlecode.com/svn/trunk/ , al apretar aceptar comenzaran a descargarse todos los archivos del proyecto. Con esto ya tienen todos los archivos del repositorio, entre los cuales pueden encontrar el source, ejemplos, distintas versiones de la libreria, etc. Ahora notaran que la carpeta tiene un icono distinto al tipico de carpeta, tiene un ticket verde, eso lo agrega TortoiseSVN y representa que la libreria no tiene cambios realizados por ustedes, es decir, esta tal cual la bajaron. Si modifican cualquier archivo adentro veran que ese simbolo cambia a un simbolo de exclamacion rojo, que representa justamente que han cambiado algo. Otro cambio que veran es que si ahora hacen click derecho sobre su carpeta, el menu de TortoiseSVN es distinto. Ahora nos muestra muchas mas opciones, ya que, es esa carpeta esta linkeada a un repositorio. El menu se vera asi:
, por ahora solo destacar de este menu la opcion SVN Update, pueden probar apretarlo ya mismo, veran que se abrira una ventana y finalmente les dira: Completed At revision: 934, esto significa que han actualizado el repositorio, no vieron mayores cambios porque acaban de bajar el repositorio original, pero si la gente de Papervision hiciera cambios, basta con hacer update para obtener los nuevos archivos o directamente se modificaran los archivos actuales, de ser asi aparecera el detalle de todo lo nuevo. En el menu que se extiende tambien encontraran opciones como show log, que les mostrara todo el historial de los archivos desde los comienzos del repositorio, y muchas otras cosas q no me vale detallar ahora. La otra opcion importante es SVN Commit, aunque para los que recien estan aprendiendo esto no les sera muy util por ahora, ya que para usarla deben tener permiso de escribir en el repositorio, esa es la opcion que usa la gente de Papervision para subir los cambios que han realizado en el repositorio. La idea de este post es principalmente explicar como bajar librerias de terceros y como usarlas, por lo que no entrare en detalle en el tema de modificacion. Ahora pasare a explicar como realizar este mismo proceso con Github.

Git

Git es otro sistema de Control de Versiones, es mucho mas nuevo que Subversion, este sistema esta maravillando a muchos equipos de trabajo, por lo que muchas librerias estan migrando a este sistema, por lo que es importante aprender a usarlo y sacar provecho de el ya que esta muy bueno. Me gustaria aclarar que yo recien estoy comenzando con Git
, por lo que comentare los que yo se al respecto. Como primera cosa, Git
es basicamente lo mismo que Subversion, pero integra cosas muy poderosas, ademas de mejorar la performance del sistema bastante. Lo que mas me gusto de Git
es el concepto de Social Coding, si no me equivoco Subversion vendria hacer lo mismo, pero yo no conozco ningun sitio que brinde las posibilidades que nos da Github
(un sitio donde podran navegar por todos los repositorios publicos), ya estoy dando mucha vuelva y quizas nadie me entiende. La gran gracia de esto es que te permite crear un branch de tu libreria favorita y comenzar a trabajar sobre ella, ya sea para mejorarla, jugar o lo que sea. El resto de usuarios en el sitio pueden ver que tu has abierto un Branch de la libreria y pueden ver los cambios que haz hecho, es mas, la misma gente que desarrolla la libreria que has brancheado podria llegar a ver los cambios que haz hecho y si les parecen buenos tienen la posibilidad de unir tu branch con el hilo original (master), esto nos brinda la oportunidad de aportar con nuestros conocimientos sin necesariamente pertenecer al grupo original de desarrollo. Eso para mi es un gran cambio con respecto a Subversion, pero tambien hay otras cosas destacables, tales como que los commit en Github son locales, por lo cual pueden ir guardando los cambios que realizen en el repositorio de manera local y luego sincronizarlo todo con el servidor remoto, que ventajas tiene esto? hacer commit cuando no tengan internet, ya sea en un avion, o que se yo, al medio de la nada. Tambien otra de las cosas a destacar, es el manejo que hade Git de la informacion, la cual consigue una performance notable a diferencia de Subversion, otra diferencia es que Git solo crea una carpeta llamada .git en la raiz del repositorio, a diferencia de Subversion que crea su carpeta .svn en la carpeta raiz y en cada sub-carpeta del repositorio, lo cual es bastante molesto. La verda es que hay otras muchas razones por las cuales encuentro Git mucho mejor que Subversion, pero no van al caso ahora. Vamos a ver como usar esta vaina.

Lo primero es descargar el programa, esto lo hacen desde el sitio oficial http://git-scm.com/download, primera grata sorpresa es que existen versiones para todos los SO tipicos, descargan e instalan. Y ahora la no tan grata sorpresa, el programa simula una consola, por lo que el uso de este es mediante comandos, tambien existen versiones visuales que se paren mas a TortoiseSVN, pero yo la verdad nunca las probe, sobre todo porque el tema de los comandos es bastante sencillo y rapido de usar y a mi me acomoda mucho, es un placer poder usar ls en vez de dir :), los que gusten de linux entenderan. Abran el Git Bash que se acaban de instalar y veran algo como esto:

Ahi si escriben si escriben: ls es como un dir... y con cd "Nombre de la carpeta" entran a los directorios, cd .. vuelven atras, etc, etc es un simple Bash tipo linux. Pueden ir hasta el directorio que quieran usar para guardar sus librerias y luego para hacer checkout de un repositorio (en terminologia Git, hacer un clone) deben escribir:

git clone git://github.com/Papervision3D/Papervision3D.git

Con git no es necesario crear una carpeta primero para hacer el checkout, haciendo clone directamente se creara un directorio con el repositorio. Tambien notaran la gran diferencia en la velocidad de descarga.

Usando las librerias

Para poder utilizar las librerias deben configurar los source path en el Flash IDE, para esto van a edicion - preferencias - van a la solapa de actionscript y van abajo al boton de "actionscript 3.0 settings" luego se les abrira una ventana.

Ahi apretan el boton "+" para agregar una nueva entrada y luego apretan el boton de carpeta para seleccionar la carpeta "c:\DONDEPUSISTELACARPETA\Papervision\branches\fp10\src", le das a todo aceptar y estas listo para usar la libreria.

15
Feb

Detonator es un framework desarrollado por Ben Throop en el Unity Summer of Code 2009. Este conjunto de scripts hace facil la incorporacion de explosiones a nuestros proyectos con Unity. En su uso mas sencillo, Detonator es un componente que puede ser atachado a cualquier GameObject. En tiempo de ejecucion crea explosiones que son configurables en muchos aspectos, tales como color. tamaño, duracion detalle y sub'elementos como chispas, humo o ondas de choque. Tambien podemos usar Detonator para crear nuestras propias explosiones, extendiendo los scripts para modificarlos.

Este framework es una excelente extension para sus projectos hechos con unity.

PAGINA EN EL SITIO DE UNITY

DESCARGAR UNITY PACKAGE

Lean mas sobre este excelente recurso en el Blog de Ben Throop

Hagan click en una de las imagenes de abajo para verlo en accion. Necesitan tener instalado el plugin de Unity.
NOTA: Aveces me a dado problema con IE, si les pasa algo similar prueben con otro browser
explosion1



15
Feb

influxis

El servidor de medios Flash de Adobe (Adobe Flash Media Server (FMS)) permite streaming de video, audio y archivos de datos en tiempo real para aplicaciones interactivas desarrolladas en Flash. Es por esto que es ideal para desarrollar aplicaciones de colaboracion multiusuario, juegos multiplayer, video chat, etc.

Flash Media Server es un concentrador de aplicaciones basadas en Flash para conectarse a un centro de mensajería en tiempo real Protocolo (RTMP). El servidor puede enviar y recibir datos hacia y desde el usuarios conectados. Los clientes relacionados entre sí pueden hacer llamadas de procedimiento remoto (RPC) en el lado del servidor y el servidor puede llamar a los métodos específicos en los clientes. Tambien nos brinda la posibilidad de trabajar con SharedObject, los que se usan para sincronizar complicadas estructuras de datos y los métodos de llamada remota en varios clientes de una sola vez. Los objetos se transportan a través de un NetConnection utilizando el Formato de mensaje de acción (AMF), que se maneja transparentemente por el servidor y cliente de flash.

Influxis es una empresa especializada en Flash Media Server, ofrece los servicios de hosting, aplicaciones prefabricadas y recursos FMS para los usuarios, lo que hace que trabajar con FMS sea muy sencillo. La empresa me a dado una cuenta de prueba en sus servidores, es por esto que escribo este articulo, para mostrar lo facil que es trabajar con FMS en Influxis.

Las 10 Razones Mas Importantes Para Escoger Influxis (extraidas desde su sitio)

  • Expertos en FMS: Influxis es el unico especialista en FMS en el mercado, apoyado por un equipo interno de Expertos y desarrolladores profesionales en Flash.
  • Asociados con Adobe: Influxis tiene acceso a la ultima informacion sobre Adobe, a sus programas de beta y esta entre los primeros en ofrecer al mercado nuevos productos FMS.
  • Niveles de Tarifas: Influxis ofrece plandes de precios para acomodar todos los niveles: desde experimentos en pequena escala hasta una red completa de servidores dedicados para las aplicaciones mas robustas.
  • Aplicaciones predesarrolladas: Influxis ha desarrollado una biblioteca completa de aplicaciones personalizables para su uso. Todas ellas incluyen archivos .FLA, e incorporan URLs para vinculacion simple o puede incrustar el codigo directamente en su sitio web. Tambien puede descargar archivos facilmente y publicarlos a su sitio web. Todo esto disenado para que usted este funcional lo mas rapidamente posible.
  • Tambien somos desarrolladores: Nuestro personal esta compuesto por desarrolladores FMS de tiempo completo ? comprendemos. Ofrecemos ayuda con modificaciones menores en sus aplicaciones. Tambien puede encontrar una pletora de recursos disponibles que incluyen Influxis Labs, Preguntas Frecuentes, Foros, Tutoriales, y nuestro personal interno de desarrollo.
  • Servicio al Cliente: Influxis se esfuerza por ir mas alla y proveer personal amistoso y competente para ayudarlo ya sea a comenzar o a resolver un problema.
  • Facil de usar. Comience inmediatamente: Su cuenta Influxis se activa inmediatamente al inscribirse, y el Asistente de asdministracion de archivos Influxis simplifica la organizacion de sus archivos, la publicacion de nuevas aplicaciones, y ud. tiene control total sobre la configuracion de su cuenta.
  • Red mundial: Influxis tiene una red internacional con ubicaciones en EE.UU. y Europa para despliegue y streaming rapido a todas partes del mundo. Tambien podemos integrar nuestra red especializada de Flash Media Interactive Server con cualquier CDN de terceros o con nuestra solucion hibrida FMS/CDN.
  • Sin contratos: Servicio mes a mes le provee flexibilidad para proyectos de corto plazo y campanas publicitarias. Tambien estan disponibles tarifas por evento.
  • Nuestros clientes confian en nosotros: Nuestros clientes incluyen empresas Fortune 500, universidades de clase mundial, agencias de publicidad, servicios gubernamentales, deportes profesionales, desarrolladores y muchos mas que confian en nosotros para alojar sus aplicacione FMS.

Me gustaria agregar un punto a esta lista, algo que yo valoro mucho de Influxis, esto es que son uno de los mayores patrocinadores en toda la movida de flash, estan presentes si no en todos, en la mayoria de eventos relacionados a este sector.
Bueno todo esto a modo de introduccion, aca les dejo 2 ejemplos con FMS, el primero es una aplicacion pre-construida de las que ofrece Influxis, es un simple chat pero ambientado en una escena en 3D. El segundo ejemplo lo hice yo y es sobre el uso de los SharedObject con FMS, esta es la manera mas sencilla de mantener a los clientes comunicados entre si, son muy utiles y faciles de usar. Actualmente estoy desarrollando una pizarra interactiva, espero poder tenerla pronto.
Como ultimo tema me gustaria comentarles un poco mi experiencia con Influxis, yo de FMS no sabia nada de nada y me resulto muy facil comenzar a trabajar con el. Con el panel de control de Influxis se me hizo muy intuitivo el tema y ademas simplifica mucho algunos temas mas avanzados, tales como el control del server (subir y bajar apps, limitarlas a dominios especificos, etc), tambien es de gran ayuda tener las aplicaciones pre-construidas, ya que es posible descargar los fuentes. Ademas la disposicion del equipo de soporte es notable, es un placer involucrarse con ellos, por lo que esta demas decir que recomiendo Influxis como solucion de hosting para sus proyectos con FMS, tienen precios muy flexibles, por lo que me parece muy a la mano de todos (planes desde 6 dolares mensuales). Miren su sitio web y veran de que hablo.

Pre-Builded App Massiva3D

massiva3D, 3D chat app

Ejemplo SharedObject

Deben abrir abrir el ejemplo 2 veces haciendo click en la imagen. Luego dragear los logos y veran como se mueven en ambas ventanas.
SharedObject Example

12
Feb

Primeros pasos con HYPE

Posted at 11:26:12

Que es HYPE?

HYPE es un nuevo framework desarrollado por Joshua Davis y Branden Hall que tiene como principal objetivo ayudar a los artistas graficos a volver a involucrarse con el codigo, ya que desde actionscript 3 y el enfoque de programacion orientada a objetos, es mucho mas dificil para estos desarrollar aunque sea cosas simples. HYPE brinda un conjunto de clases para el facil y rapido desarrollo de funcionalidades, tales como, sound analysis, object pooling, swarm behaviours, shape layout, grid layout y un extenso etc.
Claramente esto no limita a los programadores a usar HYPE, a mi modo de ver es un gran conjunto de utilidades, facilmente extendible y rehusable.

Descarga e instalacion

Primero que todo, deben descargar la libreria, desde la pagina oficial o directamente desde haciendo click aqui, tambien pueden hacerlo desde el repositorio en github.

Para poder usarlo en nuestros proyectos hay dos formas, la primera que mencionare es el archivo MXP que se lo pueden instalar directamente a su Flash IDE usando "Adobe Extension Manager CS4", yo la verdad es que no manejo mucho este tema pero esta explicado en la pagina de instalacion. La segunda forma (la que yo uso) es setear el path al source de la libreria en los "source path" del Flash IDE. (edit - preference - actionscript - Actionscript 3.0 settings) y listo, ya pueden usar HYPE en sus proyectos.

Descripcion rapida de algunas clases

  • BitmapCanvas: Captura un DisplayObject en un Bitmap, esto nos permite dibujar en el Bitmap muy facilmente.
  • FilterRhythm: Aplica un array de filtros a un BitmapData con un ritmo especifico.
  • DirectionalVibration: Hace vibrar una propiedad en una direccion dada.
  • ColorPool: Permite manejar una lista de colores y colorear objetos con colores al azar desde el listado.
  • GridLayout: Permite crear una malla de manera simple.
  • ObjectPool: Crea y maneja pools de objetos.
  • Oscillator: Oscila una propiedad con una onda especifica.
  • ShapeLayout: Permite posicionar objetos en una forma dada.
  • SoundAnalyzer: Facil manejo de las frecuencias de sonido.
  • Swarm: Permite que lo objetos se muevan hacia un punto.
  • MouseFollow: Hace que un objeto dado siga al mouse

Mi primer Ejemplo

DESCARGAR EJEMPLO
VER EJEMPLO FUERA DE ESTA WEB

Links

http://stranskydesign.com/blog/hello-hype-what-is-hype-the-flash-as3-framework/
http://thesven.com/?tag=hype
http://www.georgiefurst.co.uk/blog/?p=254
http://active.tutsplus.com/tutorials/workflow/introduction-to-the-hype-actionscript-3-0-framework/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+Flashtuts+(Activetuts%2B)
Video channel at Vimeo

8
Feb

secureSWF
Este es un tema que me preocupa bastante desde hace algun tiempo, sobre todo cuando hago trabajos freelance, ya que siempre estoy pensando que al mostrar los avances descompilaran el SWF y desapareceran. Bastante paranoico de mi parte pero no esta tan alejado de la realidad (posible). Afortunadamente nunca tuve algun problema al respecto, pero igualmente prefiero estar protegido al respecto. Ademas estos abusos tambien se usan con otros fines tales como el robo de ideas, busqueda de fallas de seguridad o exploits, etc. Tambien es un tema muy importante cuando tu aplicacion reparte premios con valor comercial, ya que es mas tentador aun el tema de conseguir algun beneficio de forma truculenta.

Cualquiera que posea una copia de un descompilador de SWF puede mirar nuestro codigo actionscript. Tipicamente nos protegemos de este abuso agragando licencias al codigo, mecanismos de proteccion de copias y derechos de autor. Sin embargo esto solo nos cubre en el ambito legal. Pero cualquiera puede acceder a tu codigo pasa abusar de el, ya sea para extraer partes, encontrar fallas de seguridad, extraer ideas, etc.

Actionscript es un lenguaje muy facil de descompilar, existen mas de 22 descompiladores hoy en dia. Esto no es una falla de diseño en el lenguaje, es simplemente una realidad de los lenguajes interpretados, tales como Java, .NET, etc.

La encriptacion del SWF (mas bien la ofuscacion del codigo) hace que al descompilar nuestro SWF, el codigo sea confunso y dificil de entender. Cabe mencionar que no es una encriptacion real.

Bueno por ultimo y para no extenderme mas, a pesar de toda la proteccion que nos brinda la ofuscacion del codigo seguimos vulnerables ante la redistribucion ilegal de nuestra aplicacion, cualquiera puede descargar el SWF y publicarlo en otro sitio. Para solucionar esto secureSWF tiene un sistema de proteccion de dominios (la pelicula solo funcionara dentro de los dominios que nosotros especifiquemos) y ademas un loader encriptado (genera un swf aparte que sera el cargador de nuestra pelicula, asigna nombres encriptados al swf y lo desencripta en tiempo de ejecucion haciendo mucho mas complejo el tema de descargar nuestro swf), la gracia de esto ultimo es protegernos de ataques de SWF rippers o grabbers, que van recolectando cuanto SWF encuentran.

secureSWF es una de las mas sofisticadas herramientas para la ofuscacion de Actionscript y es una buena solucion de proteccion para tus aplicaciones creadas con Flash y Flex.
Con secureSWF estaras protegido contra los programas de descompilacion, prevendras la copia y redistribucion ilegal y te ayudara a incrementar la seguridad en tus aplicaciones. Cabe destacar que la interfaz del programa es muy intuitiva, por lo que se hace muy facil empezar a trabajar con el programa. Ademas la documentacion es excelente.

Que hace la encryptacion SWF de secureSWF

  • Control Flow Obfuscation
  • Dynamic Code Wrapping
  • Statement-level Randomization
  • String Encryption
  • Que partes del codigo oculta la ofuscacion de secureSWF

  • Packages (and internal namespaces for AS3)
  • Classes
  • Functions (getters and setters as well)
  • Variables (local and global variables for AS1 and AS2)
  • Handles Inheritance and Polymorphism
  • Dynamic Variables (even the ones done by AS2 eval)
  • Removes Function Parameters Names
  • Frame Labels
  • Symbol Instance Names
  • Button Names
  • Textfield Names
  • Edit Textfield Variables
  • SWF Metadata
  • ActionScript 3 Metadata
  • Primeros pasos con secureSWF

    Manual secureSWF

    Demostracion de secureSWF

    Solo a modo de ejemplo cree esta clase bastante sencilla para que vean el resultado de la encriptacion con secureSWF.

    Antes

    Code:


    package
    {
      import flash.display.Sprite;
      import flash.display.StageAlign;
      import flash.display.StageQuality;
      import flash.display.StageScaleMode;
     
      public class Main extends Sprite
      {
        private var _draw:Sprite;
     
        public function Main()
        {
          super();
          configStage();
          createDraw();
          testFor();
        }
     
        private function testFor():void
        {
          for(var i:int = 0; i < 10; i++)
          {
            trace(i);
          }
        }
     
        private function createDraw():void
        {
          _draw = new Sprite();
          addChild(_draw);
          _draw.graphics.beginFill(0xff0000);
          _draw.graphics.drawRect(0, 0, 100, 100);
          _draw.graphics.endFill();
        }
     
        private function configStage():void
        {
          stage.scaleMode = StageScaleMode.NO_SCALE;
          stage.quality = StageQuality.BEST;
          stage.align = StageAlign.TOP_LEFT;
        }
      }
    }

    Despues

    Code:


    package
    {
      import flash.display.*;
     
      public class do extends Object
      {
        public function do(  )
        {
          var _local_1:boolen;
          var _local_2 = false
          if( _local_2&&_local_1 )
          {
          }
          if( _local_2 )
          {
            this.break();
            if( _local_2 )
            {
              this.if();
              if( _local_2&&_local_2 )
              {
                this. do();
              }
              return;
        }
        private function if(  ):void
        {
          var _local_1:boolen;
          var _local_2 = ^===<-^false++;
          if( _local_1 )
          {
             case = new Sprite();
            if( _local_2&&this )
            {
            }
            addChild(this. case);
            if( _local_2&&_local_1 )
            {
              this. case.graphics.beginFill(16711680);
              if( _local_1 )
              {
                _local_2 = 0>0;
                drawRect(,this instanceof 0-0,100,100);
                this. case.graphics.endFill();
              }
            }
            return;
        }
        private var  case:Sprite;
        private function break(  ):void
        {
          var _local_1:boolen;
          var _local_2:Object;
          if( _local_2 )
          {
          }
          stage.scaleMode = StageScaleMode.NO_SCALE;
          if( _local_2 )
          {
            stage.quality = StageQuality.BEST;
            if( 0-0||this )
            {
              stage.align = StageAlign.TOP_LEFT;
            }
            return;
        }
        private function  do(  ):void
        {
          var _local_2 = true as param2>=param2;
          var _local_3:boolen;
          var _local_1:int;
          while( _local_1<10 )
          {
          }
          return;
        }
      }
    }



    Como veran el codigo queda hecho una locura, pero hace exactamente lo mismo que el original. Para este ejemplo, solo use la encriptacion standart, existen otras mas potentes y otras mas suaves. :), activando mas protecciones no podia descompilar el ejemplo, ya que el descompilador crasheaba... :) muy bueno!!!
    Bueno con este ejemplo cierro el articulo, espero les haya parecido interesante. Cualquier comentario o duda sera bienvenida.

    :: Next >>

    estate, seo