Comunidad de diseño web y desarrollo en internet online

clase enviar variable a php recibir variable de php?como hacerlo?

Citar            
MensajeEscrito el 20 Ene 2012 12:59 pm
bien la idea es enviar una variable y recibir una variable apartir de un fichero as.
en el fla tengo el siguiente codigo

Código :

import clases.*;
var str1:String='proba1';
var str2:String='http://localhost/SOL/var.php';
var tr1:er=new er(str2,str1);
tr1.f02();

en el directorio clases tengo un fichero er.as con el siguiente codigo

Código :

package clases{import clases.*;
import flash.utils.*;import flash.text.*;import flash.events.*;import flash.display.Sprite;
import flash.display.Loader;import flash.display.*;import flash.display.DisplayObject;import flash.net.*;
import flash.display.DisplayObject;import fl.transitions.*;import fl.transitions.easing.*;import flash.display.Stage;
   public dynamic class er{
      var tf1:TextField=new TextField();
      var recoger:URLLoader = new URLLoader();
      var recoger1:URLLoader = new URLLoader();
      var variables1:URLVariables = new URLVariables();   
      var link:URLRequest = new URLRequest();
      var st01:String=new String();var stt:Object=new Object();
      public dynamic function er (linke:String='http://',ste:String=''){
         link=new URLRequest(linke);
         st01=ste;
         link.data = variables1;
         variables1.nnn = st01;
         link.method=URLRequestMethod.POST;
         recoger.dataFormat = URLLoaderDataFormat.BINARY;                                      
          recoger.addEventListener(Event.COMPLETE,f01);
                        recoger.load(link);
      
      }
      public dynamic function f01(e1:Event){
            recoger=URLLoader(e1.target);
            stt.text=recoger.data;
            trace(stt.text);
      }
   }
}

en el var.php tengo lo siguiente

Código :

<?php
$aa = $_POST['nnn'];
$ab=$aa . ".stphp";
echo '&ab='.$ab .'&ac=todo' . '&ad=nada';
?>

La pregunta es como puedo hacer una funcion f02 en el package de er.as para que cuando ponga en el fla tr1.f02() consiga el string stt.text, un saludo y gracias por leerme

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Ene 2012 02:43 am
No entiendo tu pregunta, recoges la variable en la función f01, se lo asignas a un campo de texto ... ¿que es lo que quieres hacer?

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 08:09 am
pues que no me lo lee bien, ademas necesitaria sacar de alguna forma la variable modificada por el php para poder hacer algo con esa variable.

El tema es que necesito obtener esa variable, he intentado de manera dinamica pero solo funciona si las variables estan dentro de la funcion constructora (por decirlo de alguna manera).

el proceso es el siguiente:

AS3 recive una variable de usuario--> esta variable se envia a un php-->el php transforma variable-->y la deja en echo--> recojo ese string(variable) en el as3.

Problema cuando recojo el string, lo hago mediante Event.COMPLET es decir un evento, la variable obtenida solo la puedo obtener siempre que este dentro de la funcion ligada a ese evento.

Posible solucion a eso, emular el evento--> es decir :

URLLOADER.addEventListener(Event.COMPLET,f01);
public function f01 (e1.Event):String{
aqui consigo la variable string con un e1.target
return (variable transformada del php);
}
------> en el fla creo una variable correspondiente a la clase que le llamare a014.

asi que la idea es obtener la variable en el fla cuando ponga trace(a014.f01.(e1));

problema fla no me reconoce e1 como evento logicamente, posible solucion crear un evento que este ligado al urlloader y que sea un return de una funcion del tipo event.type='complete'-->

public function f02():Event{
return event;
}
para asi cuando ponga a014.f01.(a014.f02()); me saque la variable que quiero.
problema esas propiedades de evento son solo de lectura, porque la manera de darle esas propiedades al evento es mediante al addeventlistener, por lo que para hacer eso hay que ver como se puede hacer pero desde clase dispatcher o algo por el estilo, que evidentemente como soy novato no se utilizar, y cuando miro la pagina de adobe me dice que solo es para nivel avanzado de as3 e intento adentrarme pero demasiadas teclas que tocar para el poco tiempo asi que lo pongo el problema en question en el foro, gracias de antemano por leerme

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Ene 2012 08:33 am
Ahora lo tengo asi en el fla-->

Código :

import clases.*;
var str1:String='proba1';
var str2:String='http://localhost/SOL/var.php';
var tr1:er=new er(str2,str1);

en el er.as tengo el siguiente codigo

Código :

package clases{import clases.*;
import flash.utils.*;import flash.text.*;import flash.events.*;import flash.display.Sprite;
import flash.display.Loader;import flash.display.*;import flash.display.DisplayObject;import 

flash.net.*;
import flash.display.DisplayObject;import fl.transitions.*;import fl.transitions.easing.*;import 

flash.display.Stage;
   public dynamic class er extends Sprite{
      
      var recoger:URLLoader = new URLLoader();
      var variables:URLVariables = new URLVariables();   
      var link:URLRequest = new URLRequest();
      var st01:String=new String();var stt:String=new String();
      public dynamic function er (linke:String='http://',ste:String=''){
         link=new URLRequest(linke);
         st01=ste;
         link.data = variables;
         variables.nnn = st01;
         link.method=URLRequestMethod.POST;
         recoger.dataFormat = URLLoaderDataFormat.BINARY;                           

                 recoger.addEventListener(Event.COMPLETE, f01);
         recoger.load(link);
         //trace(link.data);
         
      }
      
      public dynamic function f01(e1:Event):String{
            recoger=URLLoader(e1.target);
            stt=recoger.data;
            trace('e1');
            trace(e1.type);
            trace(e1.target);
            trace(e1.eventPhase);
            trace(e1.currentTarget);
            trace(e1.cancelable);
            trace(e1.bubbles);

            trace(stt);
            return stt;
            }}}
y en el var.php tengo

Código :

<?php
$aa = $_POST['nnn'];
$ab=$aa . "variablemodificada";
echo '&ab='.$ab .'&ac=todo' . '&ad=nada';
?>

me tracea todo bien
simplemente que quiero conseguir esa variable desde el fla como dije antes,

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Ene 2012 10:33 am
tendria que ser algo asi

Código :

package clases{import clases.*;
import flash.utils.*;import flash.text.*;import flash.events.*;import flash.display.Sprite;
import flash.display.Loader;import flash.display.*;import flash.display.DisplayObject;import flash.net.*;
import flash.display.DisplayObject;import fl.transitions.*;import fl.transitions.easing.*;import flash.display.Stage;
   public dynamic class  er extends Sprite{
      
      var recoger:URLLoader = new URLLoader();
      var variables:URLVariables = new URLVariables();   
      var link:URLRequest = new URLRequest();
      
      var st01:String=new String();var stt:String=new String();
      public dynamic function er (linke:String='http://',ste:String=''){
         link=new URLRequest(linke);
         st01=ste;
         link.data = variables;
         variables.nnn = st01;
         link.method=URLRequestMethod.POST;
         recoger.dataFormat = URLLoaderDataFormat.BINARY;
         recoger.addEventListener(Event.COMPLETE, f01);
         recoger.load(link);
         //trace(link.data);
         
      }
      
      public dynamic function f01(e1:Event){
            recoger=URLLoader(e1.target);
            stt=recoger.data;
            trace('e1');
            trace(e1.type);
            trace(e1.target);
            trace(e1.eventPhase);
            trace(e1.currentTarget);
            trace(e1.cancelable);
            trace(e1.bubbles);
            this._stt=stt;
            trace(stt);
            
            
      }
      public function get _stt():String{
         return this._stt;
      }
      
      

   }
}
pero evidentemente me da error en el getter de solo lectura

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Ene 2012 12:07 pm
La carga de datos es asincrónica, se pide, luego en algún momento llega y la variable toma valor. Si accedes antes que la carga se termine, no obtienes nada, de allí que tengas que accederlo luego de que se ejecute el callback f01. Si quieres accederlo ni bien esté disponible, lo que tu clase tiene que hacer es generar un evento, ej

Código ActionScript :

dispatchEvent(new Event('listo'))


En la línea de tiempo donde este instanciada

Código ActionScript :

miInstancia.addEventListener("listo", capturaVariable)
function capturaVariable(evt:Event){
  trace(miInstancia._stt)
}


Luego la convención dice que las variables que comienzan con underscore son privadas, no públicas, cambia el nombre del getter a

Código ActionScript :

public function get stt():String{
         return this._stt;
      }


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 02:22 pm
tengo esto

Código :

package clases{import clases.*;
import flash.utils.*;import flash.text.*;import flash.events.*;import flash.display.Sprite;
import flash.display.Loader;import flash.display.*;import flash.display.DisplayObject;import flash.net.*;
import flash.display.DisplayObject;import fl.transitions.*;import fl.transitions.easing.*;import flash.display.Stage;
   public dynamic class  er extends Sprite{
      var recoger:URLLoader = new URLLoader();
      var variables:URLVariables = new URLVariables();   
      var link:URLRequest = new URLRequest();
      var stt:String=new String();         
      
      public dynamic function er (linke:String='http://',ste:String=''){
         var st01:String=new String();
         var stta:String=new String();
         st01=ste;
         dispatchEvent(new Event('complete'));
         link=new URLRequest(linke);
         
         link.data = variables;
         variables.nnn = st01;
         link.method=URLRequestMethod.POST;
         recoger.dataFormat = URLLoaderDataFormat.BINARY;
         recoger.addEventListener('complete', f01);
         recoger.load(link);
         function f01(e1:Event){
            recoger=URLLoader(e1.target);
            this.stt=recoger.data;
            //trace(this.stt);
            this.stta=this.stt;
         }
         }
      public function get stta():String{
      return this.stta;
      }
   }
}
me sale desbordamiento de pila ya no se que mas hacer

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Ene 2012 02:26 pm
La declaras

Código ActionScript :

var stt:String;


La seteas

Código ActionScript :

function f01(e1:Event){
            recoger=URLLoader(e1.target);
            stta=recoger.data; //ojo, si es una de las variables, por ejemplo ab, sería this.data.ab
             dispatchEvent(new Event('listo'))
   }
public function get stta():String{
      return stta;
 }


Y como dije debiste agregar el listener. Dale vueltas, dale tiempo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Ene 2012 12:18 pm
Que tengo que hacer un contador, como lo puedo hacer con timer o algo por el estilo ahora mismo tengo el siguiente codigo

Código :

package clases{import clases.*;
import flash.utils.*;import flash.text.*;import flash.events.*;import flash.display.Sprite;
import flash.display.Loader;import flash.display.*;import flash.display.DisplayObject;import flash.net.*;
import flash.display.DisplayObject;import fl.transitions.*;import fl.transitions.easing.*;import flash.display.Stage;
   public dynamic class  er extends Sprite{
      var recoger:URLLoader = new URLLoader();
      var variables:URLVariables = new URLVariables();   
      var link:URLRequest = new URLRequest();
            var stt:String;   
      
      public dynamic function er (linke:String='http://',ste:String=''){
         
   var st01:String=new String();
         var stta:String=new String();
         st01=ste;
         link=new URLRequest(linke);
         
         link.data = variables;
         variables.nnn = st01;
         link.method=URLRequestMethod.POST;
         recoger.dataFormat = URLLoaderDataFormat.BINARY;
         recoger.addEventListener('listo', f01);
         recoger.load(link);
         function f01(e1:Event){
            recoger=URLLoader(e1.target);
            stta=recoger.data;
       dispatchEvent(new Event('listo'));
         
         }
         }
      public function get stta():String{
      return stta;
      }
   }
}
y en el fla tengo

Código :

import clases.*;
var stt:String;
var str1:String='proba1';
var str2:String='http://localhost/SOL/var.php';
var tr1:er=new er(str2,str1);
trace(tr1.stta);

y en el output me sale
Error: Error #1023: Desbordamiento de la pila.
at clases::er/get stta()
at clases::er/get stta() --> por unas 100 veces se me repite.
eso es porque le falta perder tiempo? no hay ninguna funcion que me haga eso cuando recibe una cantidad de bytes y lo compila cuando acabo los byte, y si es asi donde tengo que poner esa perdida de tiempo para que el load se carge en su totalidad, un saludo y gracias por responderme.

El fla es 16ae.fla el as es er.as.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Ene 2012 12:28 pm
¿Se repite como 100 veces? ¿tienes un montón de instancias de la clase en el escenario? ¿Estás llamando desde algún timero setInterval algún método? Intenta darle formato al código que pones así se puede entender. Ejemplo: los imports no van todos en una sola línea, sino uno por línea, etc

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Ene 2012 03:38 pm
He limpiado todo solo existe en el directorio clases1 er.as
he puesto linea por linea

Código :

package clases1{
   import flash.utils.*;
   import flash.text.*;
   import flash.events.*;
   import flash.display.Sprite;
   import flash.display.Loader;
   import flash.display.*;
   import flash.display.DisplayObject;
   import flash.net.*;
   import flash.display.DisplayObject;
   import fl.transitions.*;
   import fl.transitions.easing.*;
   import flash.display.Stage;
   public dynamic class  er extends Sprite{
      var recoger:URLLoader = new URLLoader();
      var variables:URLVariables = new URLVariables();   
      var link:URLRequest = new URLRequest();
      public dynamic function er (linke:String='http://',ste:String=''){
      var stta:String;
      var st01:String=new String();
      st01=ste;
      link=new URLRequest(linke);
      link.data = variables;
      variables.nnn = st01;
      link.method=URLRequestMethod.POST;
      recoger.dataFormat = URLLoaderDataFormat.BINARY;
      recoger.addEventListener('listo', f01);
      recoger.load(link);
      function f01(e1:Event){
         recoger=URLLoader(e1.target);
         stta=recoger.data;
         dispatchEvent(new Event('listo'));
                        trace (stta);
      }
   }
      public function get stta():String{
      return stta;
      }
   }
}
y en el fla

Código :

import clases1.er;
var stt:String;
var str1:String='proba1';
var str2:String='http://localhost/SOL/var.php';
var tr1:er=new er(str2,str1);
trace(tr1.stta);

solo hay esos dos ficheros, nada mas, solo hay ese codigo, me sigue dando desbordamiento de pila-->
por el contrario si pongo

Código :

package clases1{
   import flash.utils.*;
   import flash.text.*;
   import flash.events.*;
   import flash.display.Sprite;
   import flash.display.Loader;
   import flash.display.*;
   import flash.display.DisplayObject;
   import flash.net.*;
   import flash.display.DisplayObject;
   import fl.transitions.*;
   import fl.transitions.easing.*;
   import flash.display.Stage;
   public dynamic class  er extends Sprite{
      var recoger:URLLoader = new URLLoader();
      var variables:URLVariables = new URLVariables();   
      var link:URLRequest = new URLRequest();
      public dynamic function er (linke:String='http://',ste:String=''){
      dispatchEvent(new Event('complete'));
      var stta:String;
      var st01:String=new String();
      st01=ste;
      link=new URLRequest(linke);
      link.data = variables;
      variables.nnn = st01;
      link.method=URLRequestMethod.POST;
      recoger.dataFormat = URLLoaderDataFormat.BINARY;
      recoger.addEventListener('complete', f01);
      recoger.load(link);
      function f01(e1:Event){
         recoger=URLLoader(e1.target);
         this.stta=recoger.data;
         trace(this.stta);//<___________________________aki el trace
      }
   }
      public function get stta():String{
      return this.stta;
      }
   }
}
el trace me lo hace correctamente pero al acceder al get me dice desbordamiento de pila
un saludo y gracias por leerme

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Ene 2012 03:43 pm
y el php funciona correctamente, y a la perfeccion, asi que es algo en as3.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 26 Ene 2012 09:27 am
mientrastanto ire probando a ver que solucion puedo encontrar al respecto.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox

 

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