Comunidad de diseño web y desarrollo en internet online

as3-->php-->as3 (BINARY,TEXT,VARIABLES) problemas y soluciones

Citar            
MensajeEscrito el 19 Ene 2012 11:53 am
Bueno esto es un tema que tube algunos problemas pero ya solucione en parte, y pondre los problemas que me fue dando y las soluciones que fui encontrando.
Principalmente hay que tener en cuenta primero el envio de variables a un php y haces un navigateToURL al php para comprobar si se efectua la lectura por parte del php y eso se hace solo con un requesturl no hace falta un urlloader el codigo queda el siguiente:

Código :

var link:URLRequest = new URLRequest('http://localhost/SOL/var.php');
var variables1:URLVariables = new URLVariables();
var st01='stflash';//string de flash
link.data = variables1;
variables1.nnn = st01; //aki si haces un trace(link.data) en el output sale -->nnn='stflash' por lo tanto es
                              //como si lo estuvieras poniendo bien para que lo reciba el php
link.method=URLRequestMethod.POST;//aki envias  nnn='stflash' a -->link
//////////////////////////////////////y ahora a comprobar con navigateurl
navigateToURL(link,"_blank");

en el php que mirare de que sea muy sencillo sera el siguiente (var.php)-->

Código :

<?php
$aa = $_POST['nnn'];//aqui recibo nnn='stflash' de parte el swf cuando 
                           //se ejecuto -->link.method=URLRequestMethod.POST;
$ab=$aa . ".stphp";//transformacion de variable del php
echo 'ab=' . $ab;//salida de la variable transformada que se hara visible por la
                     //linea del swf navigateToURL(link,"_blank");
?>

hasta aki se envian datos desde el as3 y se reciben los datos se transforman desde el php y se comprueba desde as3 como quedo el php
//la salida desde el firefox a mi me da -->ab=stflash.stphp
bien ahora vamos ha recoger los datos transformados, antes de nada tener en cuenta que tienes que trabajar desde servidor y por lo tanto desde firefox porque aveces y lo tengo comprobado no siempre es lo mismo lo que aparece desde el player con lo que aparece desde el firefox por decir un explorador el problema es que no tenemos un output en la que podamos ir haciendo trace por lo que creamos una caja de texto dinamico para comprobar las posibles salidas de texto recojidas por las variables ahora para recoger datos de un php utilizamos el urlloader aqui quedaria un codigo

Código :

var tf1:TextFormat=new TextFormat();
var td1:TextField=new TextField();
td1.defaultTextFormat=tf1;
td1.type=TextFieldType.DYNAMIC;td1.border=true;
addChild (td1);////esto es para comprobar que es lo que recibo del php y como lo lee el flash
var link:URLRequest = new URLRequest('http://localhost/SOL/var.php');
var variables1:URLVariables = new URLVariables();
var recoger:URLLoader = new URLLoader();
var st01='stflash';
link.data = variables1;
variables1.nnn = st01;
link.method=URLRequestMethod.POST;///aki envio los datos al php
recoger.dataFormat = URLLoaderDataFormat.VARIABLES;//aki especifica como se van a recoger
                                              //esos datos, aki tube un poco de lio porque segun como 
                                              //dejes el echo del php te lo leera o no
recoger.addEventListener(Event.COMPLETE, f01);//cuando el load se complete entonces
                                                                   //haz f01
   recoger.load(link); ///////////////////comienza ha hacer el load(la lectura de datos del php
    function f01(e1:Event){

         //////////////esta funcion se efectua una vez se haya acabado la carga de datos

   navigateToURL(link,"_blank"); //comprobacion de como queda el echo desde firefox
   var recoger:URLLoader = URLLoader(e1.target);//ojo tiene que ser el mismo evento 
                                                                         //que la funcion es decir e1 y aki recoge 
                                                                        //el echo del php (e1.target) y lo pone dentro
                                                                        //de recoger
   td1.text=(recoger.data);     //envio el echo del php--> que se puso en el URLLOADER recoger
                                               //en la caja de texto td1.text
   stop();//le pongo un stop por que he visto que se ejecuta continuamente el swf
                 //ya que me pone todo el rato transfiriendo datos en la parte inferior del firefox
   }

Este codigo para que vayamos sobreseguro lo publicamos (en html y swf) y se ejecuta desde el servidor no desde la unidad es decir hay que ejecutar el html desde (http://localhost/SOL/16ac.html)
Bien ahora los experimentos que es lo que me gusta a mi, aki hay que tener en cuenta dos lineas

(el echo del php) y (recoger.dataFormat = URLLoaderDataFormat.VARIABLES; del flash)

si en archivo php hay:

Código :

echo 'ab='.$ab;

y en el fla hay:

Código :

recoger.dataFormat = URLLoaderDataFormat.VARIABLES;
td1.text=(recoger.data);

el resultado en la caja de texto es --> ab=stflash%2Estphp
%2E es el equivalente al codigo ascii de --> .

si en archivo php hay:

Código :

echo 'ab='.$ab;

y en el fla hay:

Código :

recoger.dataFormat = URLLoaderDataFormat.BINARY;
td1.text=(recoger.data);

el resultado en la caja de texto es --> ab=stflash.stphp

si en archivo php hay:

Código :

echo 'ab='.$ab;

y en el fla hay:

Código :

recoger.dataFormat = URLLoaderDataFormat.TEXT;
td1.text=(recoger.data);

el resultado en la caja de texto es --> ab=stflash.stphp

VARIABLES no me sale demasiado bien con todas las pruebas que hice asi que lo que voy ha hacer es emular lo que hace VARIABLES e identificar todas las variables que puede llegar ha haber y asociarlas a su respuesta mediante un array multidimensional --> supongamos que cada variable con su valor se separa de un string con & y de cada uno de esos identificamos la variable como lo que esta a la izquierda del igual y lo que esta a la derecha es su valor asi que haremos

Código :

var st02:String=recoger.data;
var a1:Array=new Array();
a1=st.split('&');
var a2:Array=new Array();
for (var n=0;n<=((a1.length)-1);n++){
a2[n]=a1[n].split('=');
}


el array a2 contendra cada variable en a2[x][0] y sus correspondientes valores en a2[x][1]
bueno apartir de aqui que cada uno desenvolupe su codigo, espero que os haya gustado, gracias por leerme y sobretodo si alguien quiere mejorar el codigo con propuestas enviad sin problema ya que estoy aki para compartir codigo y aprender

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Ene 2012 03:14 am
Le falta redacción para ser tutorial: cual es el problema/punto de partida, que es lo que quiere resolver, que se va a hacer, como se hace paso a paso. Mas bien parece una disgresión en voz alta de como fuiste resolviendo un problema que tuviste ... lo paso a aaportes, pero dale una vuelta de tuerca a ver si puede ser tutorial

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Ene 2012 01:22 pm
movido.
ademas es muy difícil de entender con tantos errores de redacción y de ortografía.

Por Mariux

BOFH

7756 de clabLevel

28 tutoriales
15 articulos

Genero:Femenino   Héroes Editores

Diseñadora & ilustradora

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.