Scusa Flep, quale è l'utilità di questo tutorial, sento che potrebbe servirmi ma non riesco ad accostarlo a nessuna funzione.
Ciao.
Abbiamo visto come passare dei valori da Flash CS3 a PHP che ci permette di mantenere in comunicazioni le nostre applicazioni Flash con il server.
Spesso abbiamo bisogno di assegnare ad un SWF un valore in ingresso utilizzando l' HTML della pagina in cui lo stesso SWF è inserito.
Con Flash 8 bastava definire una variabile sulla timeline ed assegnarli il valore tramite l' HTML.
Con Flash CS3 le cose sono un po cambiate e bisogna lavorare con la classe LoaderInfo, quindi seguite il prossimo esempio...
In questo esempio utilizo Adobe Dreamweaver per inserire un SWF in una pagina HTML e passare un valore all' SWF.
Creo un FLA che salvo con nome ' main.fla '.
Creo una pagina html con Dreamweaver e la chiamo ' main.html '.
Aggiungo main.swf alla pagina.
Seleziono l' SWF ed apro il pannello parametri, come da foto seguente:
come si può notare, inserisco come nome parametro ' flashvars ' ( in questo modo Flash sa che c'è un parametro per lui - vediamola così ) altrimenti non funziona.
Nel campo Valore, inserisco id=321. id sarà il nome della variabile che Flash cercherà e 321 il suo valore.
Ora torno a main.fla e gli assegno una Document class, un file AS che salvo con nome ' Main.as ', implementata in questo modo:
In sostanza ho detto a Flash di recuperare il valore di id che gli passa l' HTML.Code:package { import flash.display.MovieClip; import flash.text.TextField; import flash.display.LoaderInfo; public class Main extends MovieClip { private var id:String; public function Main() { getHTMLvars(); } private function getHTMLvars():void { var value:String; var obj:Object=LoaderInfo(root.loaderInfo).parameters; for (value in obj) { id=String(obj[value]); try_txt.text=id; } } } }
Analizziamo il codice
Proprietà
una variabile di tipo stringa con lo stesso nome ( non necessariamente ) della variabile che passo dall' HTML
private var id:String;
Metodi
getHTMLvars();
questo metodo implementa la logica per recuperare la varibile id dall' HTML
una variabile di tipo stringa che userò in un ciclo for in
var value:String;
una variabile di tipo Object a cui assegno la proprietà parameters del LoaderInfo della root di main.fla
var obj:Object=LoaderInfo(root.loaderInfo).parameters;
con un ciclo for in controllo se c'è una stringa nell' oggetto obj
for (value in obj)
{
assegno alla proprietà id un valore forzato a stringa pari ad una proprietà fittizia che recupero da obj ( potremmo anche vederlo come obj.value ma Flash CS3 non lo accetta )
id=String(obj[value]);
assegno il valore della proprietà id come testo di un campo di testo in modo da avere la certezza che Flash vede quella variabile passata dall' HTML
try_txt.text=id;
}
Chiaramente ho aggiunto il campo di testo solo per fini didattici, in altro caso una volta recuperato il valore della varibile id dell' HTML e assegnato alla proprietà id di Main.as, siamo in grado di sfruttare appunto tale proprietà per tutta la nostra applicazione Flash.
Alla prossima & stay tuned !
Scusa Flep, quale è l'utilità di questo tutorial, sento che potrebbe servirmi ma non riesco ad accostarlo a nessuna funzione.
Ciao.
Ti faccio un esempio:
supponiamo che hai un portale in PHP.
Vorresti che in ogni pagina del portale ci sia un SWF che carica un' immagine diversa in base alla sezione del portale.
passi un numero all' SWF dalla pagina del portale e l' SWF in base a quel numero carica la rispettiva immagine.
Grazie per questo tutorial, è molto utile per chi come me cerca di far interagire PHP e Flash.
Ti consiglierei di aggiungere tra i tag GET VARS e Query String, perché ad una prima ricerca con queste parole mi era sfuggito.
Comunque tutorial ottimo.
? Luca ?
Try Icy Phoenix CMS
Utilissimo, è quello che cercavo,
ma come faccio a leggere più variabili dall'html?
supponiamo che oltre ad id voglia aggiungerne degli altri e poi stamparli da swf a video.
come posso fare?
![]()
Ciao
In questo modo passi più valori:
Actionscript:HTML Code:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>html vars to flash CS3</title> <script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script> </head> <body> <script type="text/javascript"> AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','300','height','150','src','main','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','flashvars','id=444&ir=888','movie','main' ); //end AC code </script><noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="300" height="150"> <param name="movie" value="main.swf" /> <param name="quality" value="high" /> <param name="flashvars" value="id=444&ir=888" /> <embed src="main.swf" width="300" height="150" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" flashvars="id=444&ir=888"></embed> </object> </noscript> </body> </html>
Stamparli a video...cosa intendi ?Code:package { import flash.display.MovieClip; import flash.text.TextField; import flash.display.LoaderInfo; public class Main extends MovieClip { private var id:String; private var my_array:Array=new Array(); public function Main() { getHTMLvars(); } private function getHTMLvars():void { var value:String; var obj:Object=LoaderInfo(root.loaderInfo).parameters; for (value in obj) { id=String(obj[value]); my_array.push(id); try_txt.text=my_array.toString(); } } } }
intendevo se era possibile da javascript assegnare dinamicamente i valori richiamando AC_FL_RunContent
Grazie Flep per questo tutorial.
L'ho personalizzato in base alle mie esigenze, ma adesso ho un problema.
La variabile passata dalla pagina html corrisponde al nome del documento flv che verrà caricato all'interno del componente FLVPplayback presente nel filmato swf.
Quindi, la document class dichiara quanto segue:
Come nel tuo esempio, ho mantenuto il campo di testo diinamico al fine di verificare il corretto caricamento della variabile.Code:package { import flash.display.MovieClip; import flash.text.TextField; import flash.display.LoaderInfo; public class flVideo extends MovieClip { private var flvLoad:String; public function flVideo() { getHTMLvars(); } private function getHTMLvars():void { var value:String; var obj:Object=LoaderInfo(root.loaderInfo).parameters; for (value in obj) { flvLoad=String(obj[value])+".flv"; try_txt.text=flvLoad; flvPlayer.contentPath=flvLoad; } } } }
Però, aggiungendo la riga
qualcosa non va, producendo il seguente messaggio d'errore:Code:flvPlayer.contentPath=flvLoad;
Probabilmente non ho caricato il package necessario.Code:1119: Accesso a una proprietà non definita contentPath mediante un riferimento con tipo statico fl.video:FLVPlayback.
Ho fatto qualche ricerca, ma non sono arrivato a nulla.
Dove sbaglio?
Grazie.
Importa il package :
Code:import fl.video.FLVPlayback;
Ciao Flep.
Ho fatto quando da te indicato ma ricevo sempre lo stesso messaggio d'errore, e si riferisce proprio alla riga in questione (flvPlayer.contentPath=flvLoad;).
Può essere che faccio qualche altro errore?
Grazie.
Bookmarks