Comunidad de diseño web y desarrollo en internet online

variable JavaScript a variable Flash

Citar            
MensajeEscrito el 08 May 2009 01:12 am
Wenas...
Seria esa la cuestion, estoy tratando de hacer un uploader, el problema es que no se como recibir la variable de JS desde Flash.

Necesito seleccionar una tabla de datos en HTML, luego enviar el nombre de la tabla y otros datos con JS a Fl, recibir la variable para luego enviarla por get o post(si me tiran una mano con los metodos lo agradeceria tmb) pero por medio de .upload(new URLRequest) ya que tengo que subir un archivo.

Estuve viendo algo sobre el envio de variables por URLRequest, a ver si me pueden orientar o si voy muy mal.

Creo el objeto por separado, o sea, elaboro el URLRequest, uso .data y agregro el array, despues uso .method para setear el metodo, ejecuto .upload(objURLRequestConDataYmethod) y luego en el archivo .php simplemente recurro a $_POST o $_GET...?

AS:

Código :

var Request:URLRequest;
var wData:String;
var Vars:URLVariables;

this.Request=new URLRequest('http://localhost/root/scripts/upload.php');
         
this.Vars=new URLVariables();
this.Vars.Data='hola';
         
this.Request.data=this.Vars;
this.Request.method=URLRequestMethod.POST;

Errores:
1046: No se encontró el tipo o no es una constante en tiempo de compilación: URLVariables. var Vars:URLVariables;
1180: Llamada a un método URLVariables posiblemente no definido. this.Vars=new URLVariables();
1120: Acceso a una propiedad URLRequestMethod no definida. this.Request.method=URLRequestMethod.POST;

JS:

Código :

<script>var SW=getFlashMovieObject('SW:UpLoader'); SW.SetVariable('wData', 'Hola');</script>

Obtengo perfectamente el SW... pero no setea la variable wData


Permadi flashjscommand
Encontre eso... pero esta todo menos la parte de Flash :S

Gracias de ante mano, espero no haberme excedido

Por Fernand0

23 de clabLevel



Genero:Masculino  

Buenos Aires, Argentina

firefox
Citar            
MensajeEscrito el 08 May 2009 11:11 am

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 May 2009 06:48 pm
Muchas gracias solisarg, ya solucione lo de enviar datos por POST, anda perfecto :)

Ahora mi problema es que no puedo hacer que Flash lea la variable de JS, busque varios tutos sobre el addCalback, pero no logro hacer que ande :S

Intente lo siguiente

AS:

Código :

ExternalInterface.addCallback('wData', this.Notice);

public function Notice(str:string)
{
   JS.send('alert', 'lalala: '+str);
}

No me ejecuta la funcion Notice, y encima no me tira ningun error, asi que no tengo idea cual sera el problema, al parecer no le llega la variable ya que no ejecuta la funcion

JS:

Código :

SW.SetVariable('wData', 'Hola');
SW.wData('Hola'); //esto funcionaria con prototype tal vez


Perdon por molestar otra vez, saludos y gracias de ante mano

Por Fernand0

23 de clabLevel



Genero:Masculino  

Buenos Aires, Argentina

firefox
Citar            
MensajeEscrito el 08 May 2009 08:33 pm
Buff, parece que no entiendes lo de ExternalInterface aún. Tienes dos métodos, addCallback para que JS llame auna función en AS y call para llamar una función en JS
Entonces, si desde JS quieres llamar a la función Notice harías

Código ActionScript :

ExternalInterface.addCallback('wData', this.Notice);
public function Notice(str:string)
{
   trace("Desde JS me dicen "+str)
}


Luego desde JS

sw.wData('Hola')

En la ayuda de Flash indica como tener una referencia al swf, luego como lo tienes que probar en un navegador, en vez de un trace puedes asignar el resultado a un campo de texto

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 May 2009 09:50 pm
Pero me pegaste lo mismo que yo puse... eso quiere decir que lo entiendo :P..

Pero aun asi no anda ^^

as:

Código :

ExternalInterface.addCallback('wData', this.Notice);

public function Notice(str:String)
{
   this.Request=new URLRequest('http://localhost/root/scripts/upload.php');

   this.Vars=new URLVariables();
   this.Vars.Data=str;
   this.Request.data=this.Vars;

   this.Request.method=URLRequestMethod.POST;
}


js:

Código :

..
</object>
<script>var SW=getFlashMovieObject('SW:UpLoader'); SW.wData('Hola');</script>


Saludos

Por Fernand0

23 de clabLevel



Genero:Masculino  

Buenos Aires, Argentina

firefox
Citar            
MensajeEscrito el 08 May 2009 10:14 pm
Postea esta función javascript "getFlashMovieObject", ahí debe estar el problema y postea también el código que utilizas para insertar el objeto flash en tu html.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 08 May 2009 10:23 pm

Código :

<object id="SW:UpLoader" type="application/x-shockwave-flash" data="/Root/Scripts/uploader.swf" width="100" height="27" style="float: left; margin-bottom: 15px;">
        <param name="movie" value="uploader.swf"/>
        <param name="quality" value="high"/>
</object>


js:

Código :

function getFlashMovieObject(SW)
{
   if (window.document[SW]) return window.document[SW];
   else if (NS) return document.getElementById(SW); //NS=true si el browser es firefox
   else return document.embeds[SW];
}


Anda bien la function

Código :

alert(SW.id); //devuelve el id

Por Fernand0

23 de clabLevel



Genero:Masculino  

Buenos Aires, Argentina

firefox
Citar            
MensajeEscrito el 09 May 2009 07:02 am
En la fución "getFlashMovieObject" todo estaría bien si esta variable "NS" en algún momento se le da valor "true" si se trata del firefox. Rectifica que en algún lugar del código lo tengas (creo que debes de tenerlo en algún lado sino no te funcionaría). En cuanto al código para insertar el SWF hace mucho tiempo que está desfasado y te dará muchos problemas hoy en dia al cambiar de navegador, utiliza mejor para esto SWFObject. Por lo demás no se porqué no te funciona, que función estás intentando ejecutar dentro de flash?

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 09 May 2009 01:15 pm
elchininet ... bastante tiempo sin aparecer por aquí, esper verte seguido ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 May 2009 09:55 pm
En FF lo estoy haciendo, no veo razon para que no ande, el problema en si es que por alguna razon no recibe/manda la variable :S

Si, NS=true. El problema no es el resto, porque todo el codigo anda(lo comprobe mil veces paso a paso), exceptuando por recibir/mandar la variable.

Saludos y gracias :)

Por Fernand0

23 de clabLevel



Genero:Masculino  

Buenos Aires, Argentina

firefox
Citar            
MensajeEscrito el 09 May 2009 10:14 pm

Por Fernand0

23 de clabLevel



Genero:Masculino  

Buenos Aires, Argentina

firefox
Citar            
MensajeEscrito el 11 May 2009 07:46 pm
Bueno he realizado un pequeño ejemplo con tu mismo código y funciona de maravilla, creo que así podrás detectar donde está el problema.

http://www.megaupload.com/?d=D8U7HMJY

solisarg escribió:

elchininet ... bastante tiempo sin aparecer por aquí, esper verte seguido ;)

Jorge


Que tal Jorge, he estado un poco liado en estos últimos tiempos. Me alegro de verte ;)

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 11 May 2009 09:51 pm


Te anduvo? Porque yo no le modifique nada ._.

Gracias por la molestia elchininet :)

Por Fernand0

23 de clabLevel



Genero:Masculino  

Buenos Aires, Argentina

firefox
Citar            
MensajeEscrito el 12 May 2009 07:49 pm
Ya veo donde está el problema, estás ejecutando el html local, así no te funcionará debido a las restricciones de seguridad del flash player, para que te funcione tienes que correlo desde un servidor local o de internet.

http://img14.imageshack.us/img14/729/externalgao.gif

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 13 May 2009 12:51 am
Ahi anduvo... joder.... y lo habia probado de mil maneras....

Muchas gracias por la paciencia elchininet.. ^^

Por Fernand0

23 de clabLevel



Genero:Masculino  

Buenos Aires, Argentina

firefox
Citar            
MensajeEscrito el 13 May 2009 08:24 pm
No hay de que ;)

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox

 

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