Archivo

Entradas Etiquetadas ‘Actionscript’

Primeros pasos con HYPE

viernes, 12 de febrero de 2010 miguelMoraleda Sin comentarios

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

Protegiendo tus SWF con secureSWF

lunes, 8 de febrero de 2010 miguelMoraleda 2 comentarios

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
    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
    package
    {
    	import flash.display.*;
     
    	public class do extends Object
    	{
    		public function do(  )
    		{
    			var _local_1:boolen;
    			var _local_2 = false<NULL&param2;
    			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.

    Auspiciado secureSWF

    Google Sky, Moon y Mars usando gmaps-utility-library-flash

    domingo, 19 de julio de 2009 admin Sin comentarios

    Investigando un poco mas sobre google maps me encontre con una libreria de utilidades que proporciona 3 mapas nuevos, el del espacio, la luna y marte. Usarlos es muy simple. La libreria tambien tiene otras utilidades que aun no exploro en profundidad. Si les interesa pueden bajarsela y leer un poco mas en el sitio oficial en google code.
    Visitar aca. http://code.google.com/p/gmaps-utility-library-flash/

    EJEMPLO DE GOOGLE SKY (o presiona la imagen)
    googleSky

    EJEMPLO DE GOOGLE MOON (o presiona la imagen)
    googleMoon

    EJEMPLO DE GOOGLE MARS (o presiona la imagen)
    googleMars



    Categories: Actionscript 3, Flash Tags:

    Tutorial Actionscript 3 – How To Google Maps API

    domingo, 19 de julio de 2009 miguelMoraleda 3 comentarios

    En esta ocacion voy a explicar brevemente como utilizar el API de google Maps.

    1.- Lo primero que deben hacer es conseguir una API Key para poder conectarse.
    Para solicitar la key deben ir a http://code.google.com/apis/maps/signup.html

    En ese sitio, luego de leer y aceptar los terminos y condiciones deben especificar el dominio de su pagina. Para luego obtener su key.

    googleMaps

    2.- El siguiente paso es descargarse el kit de google con las librerias para actionscript y flex.
    El kit lo pueden descargar directamente haciendo click aca
    El kit contiene dos archivos .swc, uno para flash y el otro para flex. En este ejemplo yo utilize el de flash.

    3.- Con la key y la api ya estamos listos para empezar a trabajar. Lo primero que deben hacer es crear un nuevo proyecto y configurar su Flash IDE para que incluya el archivo .swc de la API. Para hacer eso deben ir a edicion-preferencias-actionscript-actionscript 3 se les abrira una ventana que contiene todos los class path a sus distintas librerias y en la parte para las librerias deben agregar la carpeta que contiene el .swc de la API de google.

    4.- Ahora directo al codigo.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var _map:Map = new Map();
    _map.key = "ACA DEBEN PONER SU KEY";
    _map.language = "es";
    _map.setSize(new Point(stage.stageWidth, stage.stageHeight));
    _map.addEventListener(MapEvent.MAP_READY, onMapReady);
    _map.y = 50;
    addChild(_map);
     
    function onMapReady(event:Event):void {
    	_map.setCenter(new LatLng(40.736072, -73.992062), 14, MapType.NORMAL_MAP_TYPE);
    }

    Con estas pocas lineas ya tenemos en nuestra aplicacion conectandose a google maps y mostrando el mapa del mundo.

    googleMapsExample

    Ojala este pequeño post le sirva a alguien. Cualquier duda, consulta o sugerencia sera bien recibida.

    VER EJEMPLO
    DESCARGAR EJEMPLO



    Categories: Actionscript 3, Flash Tags:

    Augmented Reality – levelHead v1.0, 3-cube speedrun

    sábado, 23 de mayo de 2009 miguelMoraleda 1 comentario

    Simplemente impactante.

    Pueden leer mas sobre el proyecto aca:
    http://julianoliver.com/levelhead

    Categories: Actionscript 3, Flash Tags:

    Tutorial Actionscript 3 – How to use a webcam on Flash

    sábado, 18 de abril de 2009 miguelMoraleda 5 comentarios

    Aca les dejo un ejemplo de como usar su camara web con actionscript. Realmente no tiene ninguna ciencia.
    Aca el codigo, mas abajo pueden ver y/o descargar el ejemplo

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    //Creo una instancia de video de 640x480
    video = new Video(640, 480);
    //Obtengo la referencia a la camara
    camara = Camera.getCamera();
    //setMode configura el width, height y framerate de la camara
    camara.setMode(640, 480, 30);
    //Atacho la camara al video.
    video.attachCamera(camara);
    //finalmente agrego el video al scenario
    addChild(video);

    VER EJEMPLO
    DESCARGAR EJEMPLO

    Categories: Actionscript 3, Flash Tags:

    Actionscript 3 – arguments of each function

    sábado, 28 de marzo de 2009 miguelMoraleda Sin comentarios

    El atributo “arguments” lo tenemos dentro de cada funcion. Este atributo es un simple array que contiene los datos que recibio la funcion como parametros.

    Tiene dos variables publicas:

    callee -> que es una referencia de la funcion llamadora (muy util)
    lenght -> el numero de atributos que recibio la funcion.

    Aca les paso el codigo de ejemplo que esta en el manual de referencia de adobe.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    package {
        import flash.display.Sprite;
     
        public class ArgumentsExample extends Sprite {
            public function ArgumentsExample() {
                    println("Hello World");
            }
     
            public function println(str:String):void {
                trace(arguments.callee == this.println); // true
                trace(arguments.length);                 // 1
                trace(arguments[0]);                     // Hello World
                trace(str);                                // Hello World
            }
        }
    }
    Categories: Actionscript 3, Flash Tags:

    Tutorial Actionscript 3 – Dynamic params in a function

    sábado, 28 de marzo de 2009 miguelMoraleda Sin comentarios

    La siguiente es una mas de las opciones de actionscript 3, consiste en decirle a una funcion que recibe como parametro un array de largo indeterminado. Esto viene siendo como la sobrecarga de funciones en java, realmente no es tan potente y en cierta medida me parece una construccion un poco fea, porque para sacar los attributos se debe “hardcodear” el orden de los attributos y realizar un switch para realizar distintas acciones dependiendo del numero de parametros que recibio, o su tipo.

    private function testDynamicArguments(...args):void
    {
    	trace("Se recibio: " + args + "numero de argumentos: " + args.length);
     
    }
    Categories: Actionscript 3, Flash Tags:

    Actionscript 3 Tutorial Image Galery Example

    sábado, 14 de marzo de 2009 miguelMoraleda Sin comentarios

    Bueno supongo que esto es de lo mas requerido al trabajar con flash. Este es un ejemplo de como a partir de un xml, cargamos imagenes y las creamos a modo de galeria. El tema de la galeria se puede abordar de muchas formas, unas mas complejas que otras, el tema da para mucho. Aca hice el ejemplo bastante sencillo, cree una clase Thumb que es la miniatura de la imagen, esa clase guarda la url de la miniatura y la imagen grande para posteriormente cargar la miniatura. En el main lo que hago es leer el xml y crear una de esas clases Thumb por cada entrada en el xml, y las voy agregando al escenario horizontalmente. Bueno basta de explicaciones, para mi lo mas sencillo es que vean el codigo por ustedes mismos. Realmente el ejemplo que les dejo acontinuacion no esta muy bien acabado, no tiene preloaders ni esta diseñado para navegar entre muchas imagenes con un scroll, solo es lo basico de como levantar las imagenes.

    VER EJEMPLO
    DESCARGAR EJEMPLO

    Categories: Actionscript 3, Flash Tags:

    Actionscript 3 tutorial Remove All Childrens, childs from a displayobject

    sábado, 14 de marzo de 2009 miguelMoraleda 3 comentarios

    Para remover todos los child de un container, sin saber cuandos hay, se debe hacer de esta forma:

    1
    
    while(numChildren) removeChildAt(0);
    Categories: Actionscript 3, Flash Tags:
    Get Adobe Flash playerPlugin by wpburn.com wordpress themes