como encriptar datos entre ActionScript as3 y Php

existe una libreria llamada cryto que es muy simple. Solo debes crear una instancia de ella y luego pasarle el string que necesitas que te encripte. La devolución de ese proceso es una cadena (string) encriptada. Luego ese dato lo puedes enviar al php quien hara exactamente el proceso opuesto.

dejo un ejemplo en para ActionScript funcionando :  ttananalab.com/di3blog/as3/testme.swf

y el source para descargar el .fla aca: http://ttananalab.com/di3blog/as3/as3Crypto.rar  (contiene el FLA y las librerias y ejemplo funcionando).

 

************** del lado PHP ***************

  •  cryptlib.php

  1. Crear una instancia con la misma “password” o key String puesta en el flash. (en ejemplo es “password”
  2. decrypt el mensaje usando ( POST object)
01
02
03
04
05
06
07
08
09
10
11
12
13
include_once "lib/cryptlib.php";
// init a new instance of Crypto Class
$crypto = new Crypt;
// init with the encryption key
$result = $crypto->init("PASSWORD");
// get the POST data
$messagefromflash = $_POST ["message"];
// decrypt data
$decrypted_messagefromflash = $crypto->decrypt(utf8_decode($messagefromflash));

en caso de enviar info encryptada a flash usas: crypto

1
2
3
// return a crypted result to flash
$resultmsg = "Ok, i received your data, everything is fine !";
echo "result=".$crypto->encrypt(utf8_encode($resultmsg));
Anuncios

como ejecutar javaScript desde flash o flash desde javaScript

aca dejo un rar con toda las opciones, incluso como pasar desde as3 parametros a funciones o metodos de javascript y obtener un return con parametros…

todo en un solo flash.

http://controlz.com.ar/di3blog/as3/flash-javaScript.rar

 

Filtras objetos por su nombre! ((como Saber si un String existe dentro de un String ))

En este caso voy filtrar objetos por su nombre…

por ejemplo, si tengo 10 objetos que se llaman “formaA”, B,C,D etc.. todo contienen la palabra “forma”

con lo cual, mediante un for voy a recorret todos los objetos de mi escenario y voy a guardar en una variable su nombre uno a uno… en ese mismo momento mediante un if voy a condicionar que si…  ESE OBJETO.name  contiene en su nombre este String “forma”, entonces le suceda algo.. en este caso solamente le pondremos un listener!

 

codigo:
for(var i:uint = 0; i < numChildren; i++){ //recorro todos objetos de mi mc

var names:String = getChildAt(i).name; //variable con el nombre del Child que recorre en esta vuelta del for.
var lookForForma:String = “forma”; // filtro! (este es el string con el filtrare)

if (names.indexOf(lookForForma) != -1) { // filtro
trace(“arriba”);
trace(getChildAt(i).name);
getChildAt(i).addEventListener(MouseEvent.CLICK , doblonIDHandler, false, 0, true); // le aplico el evento..
}else{

trace(“este no sirve ->”,getChildAt(i).name);

}
function doblonIDHandler (e:MouseEvent) {
trace(“hiciste clic en :”,e.currentTarget.name);
}

es simple! VERDAD?

—————– esto es todo!

para buscar un string dentro de un string se usa indexOf

Evento Personalizado as3

como implementarlo? , por ejemplo:

X cantidad de botones que disparan una tipica funcion… en el Handler puedes ponerlo asi:

protected function dispatchToSingleMenu(event:Event):void
{
var btnOriginen:String = event.currentTarget.name;
dispatchEvent(new EventSingleMenu(EventSingleMenu.VIDEO_CONTACTOS ,btnOriginen));
}

 

en otra clase podria estar escuchando este evento asi:

objetoX.addEventListener(EventSingleMenu.VIDEO_CONTACTOS , tuHandler);

private function tuHandler(event:EventSingleMenu):void{

trace(event.id); //btnOriginen

}

 

/// CLASE PERSONALIZADA DE EVENTO/////////  copia de aqui hacia abajo!

package com.eventSingleMenu
{
import flash.events.Event;

public class EventSingleMenu extends Event
{

public static const VIDEO_CONTACTOS :String = “contactos”;
public static const VIDEO_JUEGO :String = “Juegos”;
public static const VIDEO_IE :String = “ie”;
public static const VIDEO_CONDUCIR :String = “conducir”;
public static const VIDEO_IMAGENES :String = “imagenes”;
public static const VIDEO_YO :String = “yo”;
public static const VIDEO_GRUPOS :String = “grupos”;

public var id:uint;

public function EventSingleMenu(type:String, id:uint,bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
this.id = id;
}
}
}

Google Analytics as3 – Tiempo Real Singleton para Trackear todo tu sitio flash

es un Singleton para que puedas acceder desde cualquier parte de tu sitio web flash a una funcion a la que le pasas un String el cual sera tu ID de tracking.. ejemplo:

//GOOGLE ANALYTICS
Gtracker.trackPageView(“/facebookClickButton”);

en google Analytics apareceria /facebookClickButton <- cuantas veces se ah hecho clic ahi o cuantas veces sucedio ese evento…

Hoy google ademas permite ver esto en tiempo REAL.. !

Descargar : http://controlz.com.ar/di3blog/as3/analitycAs3OK/GA.rar

Live:  http://controlz.com.ar/di3blog/as3/analitycAs3OK/GATest.html

Publicado en AS 3.0

Etiquetas:,

Permalink Deja un comentario

Flash as3 y Bases de Datos post

Por dificil que parece , realmente es muy sencillo…

Flash puede enviar variables a parametros de servicios que el servidor esta esperando..  y este mismo servicio hace una devolucion que debemos obtener , sea para saber si esta “OK” , hubo ERROR o si … simplmente puede devolver informacion que debemos mostrar al usuario..

Por ejemplo:
Podemos enviar el Nombre y Apellido a un servicio el cual nos devuelve un XML con informacion que luego nosotros mostraremos en el front (siempre por flash) y de esta manera estariamos llevando y trayendo informacion del celular.. dependiendo del proyecto es importante poner un encrypter , pero eso es otra historia…

 

aca dejo un ejemplo simplificado de una funcion que envia un ID a la base de datos…  , el servicio nos devuelve simepre un XML que dice:  <status>0</status> (por ejemplo si esta ok! … o bien 1, si el usuario ya existe y si ya existe.. enviarnos este xml <status>1</status>Diego Burgos<nombre></nombre> … en este ejemplo “0” (cero) seria que recibio el ID perfecto… y que no existe ese usuario, con lo cual le podemos mostrar un formulario para enviar el resto de los datos verdad? o bien.. “1”  es que ya existe y nos devuelve un xml con toda su info…

es simple…

 

 

 

public function login(facebookId:String):void {

var urlVars        :URLVariables = new URLVariables();
var urlRequ        :URLRequest = new URLRequest (“http://www.controlz.com.ar/tuServicioDeLogin.aspx&#8221;);    // < — URL del servicio

urlRequ.method = URLRequestMethod.POST;   // < — Tipo de metodo de envio

//setVaribles para enviar
urlVars.facebookId = facebookId;    // < — varible con propiedades (seria una variable a la cual le agregamos todas las propiedades que querramos… asi como le enviamos facebookId (String que espera nuestro servicio) podriamos enviar muchas mas abajo comentadas
//  urlVars.otraVariableMAs = “loqueSea” ;

urlRequ.data = urlVars;     // < — indicamos que es lo que enviamos
// envio y espero
var urlLoad:URLLoader = new URLLoader();
urlLoad.load(urlRequ);
urlLoad.addEventListener(Event.COMPLETE, onSendCompleteLogin);    // < —  listeners uno para cuando se completa el envio
urlLoad.addEventListener(IOErrorEvent.IO_ERROR, onSendError);      // < —   listeners por si existe un error
}

 

 

private function onSendCompleteLogin (event:Event) {   // < —  esta es la funcion de callBack es decir la funcion que se ejecuta al regreso de Complete
var strToXML:String = “<xmlFist>”+event.target.data+”</xmlFist>”;    // < —  lo convertimos en XML (si queremos podemos agregarles nodos extras como este caso, pero no hace falta segun el formato de xml q devuelva el servidor).
var objetoTipoXML:XML = new XML(strToXML);
////trace(“onSendComplete”, strToXML);
analyzerData(objetoTipoXML, ServiceToSimpleEvent.LOGIN);     // < —  una vez convertido en XML ejecuto otra funcion que analize, recorra y tome los datos que necesite del XML (que es la respues del servidor).

}

 

 

private  function analyzerData(objetoTipoXML:XML, referenceService:String):void {   // < — aqui analizamos el XML…  el PRIMER PARAMETRO es el objeto xml a recorrer y el SEGUNDO es una referencia del servicio  ya podemos usar esta fnc para varios serv.

////trace(“devolucion analizada:”);

var referenceService:String = referenceService;
var status:String;
var description:String;

for each(var nodo:XML in objetoTipoXML){    // < —  En este caso estoy tomando los nodos Status y Description que me devolvia el servidor.
trace(“a:”,nodo.Status);
status = nodo.Status
trace(“b:”,nodo.Description);
description = nodo.Description
trace(“c:”,referenceService);
}

dispatchEvent(new ServiceToSimpleEvent(referenceService,status,description)); // < —  finalmente enviamos un Evento con la informacion regida para hacer con el , lo que querramos…  (abajo pongo una funcion para escuchar ese evento y ver como tomamos esa info)

}

 

private function loginHandlerPostService (event:ServiceToSimpleEvent):void{ // < —   Si escucho este evento, tengo la informacion haciendo lo siguiente.
//trace(“Status: “,event.statusData);
//trace(“Descripcion:”,event.descriptionData);

var status:String = event.statusData;
var descripcion:String = event.descriptionData;   // < —  tengo 2 variables status y description y en base a esto pueedo hacer los IF necesario!

if (event.statusData == ServiceToServices.RESPONSE_VALIDATION_DATA_BASE){    //2
//trace(“usuario NO EXISTE:  ” , descripcion , “:::::::::: AL FORMULARIO ::::::::::”);

changeScreenShowForm();
formulario.addEventListener(ControlStatusAppEvents.SOCIAL_NETWORL,gotoHome);

}else if(event.statusData == ServiceToServices.RESPONSE_SUCCESS){ // 0 // usuario ya registrado devuelve token:
//trace(“usuario EXISTE:  ” , descripcion , “:::::::::: PASA A LA HOME ::::::::::”);
ServiceToServices.USER_UID = descripcion;
gotoHome();

}else {
//var msgBoxRESPONSE_SUCCESS:CustomMessageBox = new CustomMessageBox(“Ups!”, descripcion, MessageBoxType.OK_ONLY)
}

}

 

———————– > recordar al copiar el codigo cambiar el tipo de comillas para que as3 lo interprete..

 

este es un ejemplo mas sencillo directamente en el FLA sin clase.. lo idea es tener un singleton con la clase de los servicios para accederla de cualquier lado..!

 

http://www.controlz.com.ar/di3blog/as3/ServiciosAs3-envioPost.rar

Como Ejecutar desde JavaScript una funcion dentro de FLASH…

Ejemplos uno en AS2 y otro en as3 … que permite saber como ejecutar desde JAVASCRIPT  una funcion que esta en FLASH. Lo unico que se debe tener en cuenta

que para que esto funcione bien, deben asegurarse que el documento flash este cargado (document.Ready) de lo contrario dara error .

 

http://www.controlz.com.ar/di3blog/as3/deJsaFlash.rar

 

gracias

CirculoConcentrico por la ayuda en JS.

😛