Comunidad de diseño web y desarrollo en internet online

Lanzar un SWF con una serie de parámetros

Citar            
MensajeEscrito el 23 Jun 2008 05:31 am
Hola amigos, quisiera hacer algo desde ASP como esto:

Código :

www.miWeb.com/miASP.asp?parametro1=miValor


Y lo lanzo según la publicación de Flash desde algo así

Código :

<noscript>
   <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="1197" height="846" id="miFichero" align="middle">
   <param name="allowScriptAccess" value="sameDomain" />
   <param name="allowFullScreen" value="false" />
   <param name="movie" value="miFichero.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />   <embed src="miFichero.swf" quality="high" bgcolor="#ffffff" width="1197" height="846" name="miFichero" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
   </object>
</noscript>


Necesito pasarle ese parámetro del ASP al interior del SWF y luego recuperarlo. Mi pregunta es, puede hacerse con algo así:

Código :

<param name="movie" value="miFichero.swf" /><param name="parametro1" value="miValor" />


leyendo desde el ASP con un querystring y después desde Flash recuperarlo con:

Código :

private function alCargar(event:Event):void{
            var miEjemplo:URLVariables = new URLVariables(event.target.data.Parametro1);
         }


Si me contestais que todo es correcto, decidme donde está el error porque no se como solucionarlo. Gracias por todo

Por gronsi

31 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Jun 2008 06:38 am
Yo lo haría con FlashVars (el valor del parámetro es accesible como si fuera una variable de _root)

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Jun 2008 08:59 am
Si lo que estás trabajando es Action Script 3 el proceso es un poco más complicado..

Puedes hacerlo de dos maneras,
De la misma manera que lo habías puesto:

Código :


www.miWeb.com/miASP.asp?parametro1=miValor1&parametro2=miValor2



Y de esta otra manera, que es la que te recomienda Eliseo2:

Código :


<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="1197" height="846" id="miFichero" align="middle">
  <param name="allowScriptAccess" value="sameDomain" />
  <param name="allowFullScreen" value="false" />
  <param name="movie" value="miFichero.swf" />
  <param name="quality" value="high" />
  <param name="bgcolor" value="#ffffff" />
  <param name="flashvars" value="parametro1=miValor1&parametro2=miValor2"/>
  <embed src="miFichero.swf" quality="high" bgcolor="#ffffff" width="1197" height="846" flashvars="parametro1=miValor1&parametro2=miValor2" name="miFichero" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>



Ahora desde flash es donde se complica la cosa.
En AS1 y AS2 estas variables iban a funcionar como si fueran variables globales en todo el documento por lo que no tendrías que escribir ningún script para acceder a ellas, bueno en AS3 debes acceder a ellas mediante un script, aquí tienes el método más utilizado:

Código :


var parametro1:String;
var parametro2:String;

var paramArray:Array = new Array();

try {   
   var param:String;   
   var valor:String;

   var parametros:Object = LoaderInfo(this.root.loaderInfo).parameters;
      
   for (param in parametros) {
         
      //Guarda cada unos de los valores enviados en un arreglo
      paramArray[sum] = String(parametros[param]);
      valor = String(parametros[param]);

      trace("la primera variable es " + param + "=" + valor);
         
   }
      
} catch (error:Error) {
      
   trace("error al cargar los parametros");
      
}

//Aquí puedes darle valor a tus variables globales
parametro1 = paramArray[0]; //Este parámetro tendrá el valor de miValor1
parametro2 = paramArray[1]; //Este parámetro tendrá el valor de miValor2

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 25 Jun 2008 06:26 am
Ok, gracias pero no me funciona.

Bueno, arreglé que la variable sum no estaba definida para el arreglo y la incremento dentro del bucle y creé una clase para ello. No me da errores pero me da siempre un valor NULL para el parámetro pasado.

Independientemente de si lo meto en el objeto embebido como FlashVars o lo lanzo como "miSWF.swf?parametro1=miValor1"

Tienes idea por qué, me he vuelto loco provando todo y no se por donde tirar. No creo que sea tan complicado, debe ser una chorrada. Gracias de nuevo

Por gronsi

31 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Jun 2008 08:40 am
Disculpa lo de la variable sum, no estaba inicializada, esto siempre me pasa cuando trato de escribir el código sin antes probarlo, pero ahora lo que he hecho es hacer el ejemplo y subirtelo a megaupload.

Aquí te dejo el ejemplo:

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

Saludos

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 26 Jun 2008 05:59 am
Ahora si que funciona, gracias. Aunque no entiendo qué es lo que estaba haciendo mal. Creo que era que me faltaba añadir los parámetros de lanzamiento también en el JS ya que solo lo hacía en el objeto embebido.

Ok, un paso más. Si quiero crear una clase para este mogollón, no se cómo acceder al root desde ella me da erro al hacer esto (lo he simplificado a un parámetro pq no necesito más):


Código :

package 
{
   import flash.display.*
   import flash.events.*;

   public class miClase extends Sprite{    
      public var parametro1:String;
      
         private var parametros:Object = LoaderInfo(this.root.loaderInfo).parameters;

      public function miClase(){
         try 
         {   
               parametro1 = parametros.parametro1;
         } 
         catch (error:Error) 
         {
            trace("error al cargar los parametros");
           }
         parametro1 = (parametro1 != null)?parametro1:"no se ha recibido la variable"; 
      }
   }
}


Me da este error:

Código :

1119: Acceso a una propiedad root posiblemente no definida mediante una referencia con tipo estático Class.

Por gronsi

31 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Jun 2008 09:13 am
Yo siempre cuando quiero obtener una referencia a la antigua root de AS2 lo que hago es que le envio a la clase en su función principal la stage principal,por ejemplo, esta es la clase:

Código :

package {
   
   import flash.display.*;
   import flash.events.*;
   
   public class flashVars extends Sprite {
      
      var param:String;
      var parametros:Object;
      
      public function flashVars(theStage:MovieClip):void{
         
         try {
            
            parametros = LoaderInfo(theStage.root.loaderInfo).parameters;
            param = parametros.parametro1;
            
         }catch (error:Error){
            
            trace("error al cargar los parametros");
            
         }
         
         param = (param != null)?param:"no se ha recibido la variable"; 
         
      }
      
      public function getParam():String{
         
         return param;
         
      }
      
   }
   
}


Y desde la document class creo a flashVars y accedo a la variable param:

Código :

var myFlashVars:flashVars = new flashVars(this);
var parametro1:String = myFlashVars.getParam();

p1.text = parametro1;


Saludos

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 26 Jun 2008 11:43 am
Gracias, ahora si que me funciona. Iré evolucionando el tema y te daré el coñazo pidiendo ayuda. Te debo una cerveza :)

Por gronsi

31 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Mar 2009 06:10 pm
Hola que tal yo tengo un problema parecido quiero mandar unos valores pero como lo podria hacer en AS2

Saludos

Por joshuavw

Claber

306 de clabLevel



Genero:Masculino  

Juego, aprendo y programo

firefox

 

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