Newsgroup: it.comp.lang.javascript
Titolo: Javascript e Flash

Salve a tutti! E' la prima volta che posto su questo Ng e vi scrivo per
avere un piccolo aiuto ...almeno credo. Sto realizzando un sito internet in
flash per una radio locale. Mi č stato chiesto di inserire il classico
avviso "On air" tipico di chi sta in regia. Si tratta di una spia rossa
sempre accesa, una scritta "on air" sempre attiva e (e qui mi rivolgo a voi)
il nome del programma che č, per l'appunto, on air con il nome di chi lo
conduce. Queste ultime due informazioni si dovrebbero aggiornare
automaticamente in base ad una tabella con gli orari dei programmi e i nomi
dei conduttori.. Mi chiedevo se esiste un modo (uno script, un tutorial o
altro) per realizzare questa operazione facendo interagire il file .swf con
una javascript client-side. Io non ne capisco un granchč (anzi nulla), ma ad
intuito ho pensato che questa soluzione potrebbe essere la migliore.
Grazie a tutti,
Lello

quallcosa del genere si può fare..ma è difficilmente realizzabile
client-side.perchè per quanto riguarda la tabella serve comunque un
database su un server, e allora fai prima a fare tutto latoserver....
magari specifica meglio cosa hai a disposizione.. (server, soft,
eventuale db installato)

 ha scritto nel messaggio
news:1105016711....@c13g2000cwb.googlegroups.com...


se metti tutto su aruba allora hai asp + access...(senza spendere in +
per l'mysql) ; tieni presente comunque che se i db access diventan
grossi rallentano parecciho, vanno ricompattati, ecc...danno un po' di
proble, cmq per quello che ti serve dovrebbe bastarti...
a quel punto usi asp per tirare fuori i dati (ci sono anche esempi su
come fare nel vademecum di 
aruba.it
) e inviare all'utente finale il
programma e le altre info in base all'ora (ATTENZIONE PERO' che come
riferimento c'è l'ora del server, quindi eventualmente dovi fare una
correzione......)

 ha scritto nel messaggio
news:1105026270.8...@z14g2000cwz.googlegroups.com...


 ha scritto nel messaggio
news:1105026270.8...@z14g2000cwz.googlegroups.com...
se metti tutto su aruba allora hai asp + access...(senza spendere in +
per l'mysql) ; tieni presente comunque che se i db access diventan
grossi rallentano parecciho, vanno ricompattati, ecc...danno un po' di
proble, cmq per quello che ti serve dovrebbe bastarti...
a quel punto usi asp per tirare fuori i dati (ci sono anche esempi su
come fare nel vademecum di 
aruba.it
) e inviare all'utente finale il
programma e le altre info in base all'ora (ATTENZIONE PERO' che come
riferimento c'č l'ora del server, quindi eventualmente dovi fare una
correzione......)

 una javascript client-side.
Qui trovi un esempio per passare una variabile a flash con javascript.
Ricordati che comunque il flesh deve essere caricato prima di passare la 
var.
http://tinyurl.com/4tqtp
-- 
Andrea Azzini
Arya Interactive Media srl
www.inarya.com

nn è che sul sito di aruba trovi tutto, ma trovi esempi che puoi
facilmente adattare al tuo caso...
poi qui si tratta di una semplice lettura da un db...di esempi in giro
se ne trovano quanti se ne vuole, basta cercare (es 
freeasp.html.it
,
aspitalia, ecc...)

 facilmente adattare al tuo caso...
Non capisco cosa importa che hosting hai...
Javascript e flash sono linguaggi indipendenti dal server...


il fatto è che Lello i dati della tabelle li deve mettere su un
server.... meglio se in un db....., a questo punto nn conviene usare
java (e cmq NO javascript) ma un altro linguaggio

Al momento sono riuscito ad adattare uno script alle mie esigenze ...forse
nn sono lontano dalla soluzione. Come Andrea sono dell'opinione che non è
importante il server che ho a disposizione. Ho trovato una javascript che mi
permette di visualizzare il nome del programma radiofonico e il relativo
conduttore. Tutto questo avviene in una normale pagina html. Il punto è che
questo messaggio vorrei che comparisse all'interno del filmato flash. Il
filmato deve recuperare questo messaggio e visualizzarlo all'interno di un
campo di testo dinamico. Credo che la soluzione sia questa, ma non sono
pratico con le sintassi così vado avanti un pò a tentoni.
Di seguito ho copiato il codice utilizzato ...se qualche anima pia
volesse dargli un'occhiata gliene sarei veramente grato.
Al vostro buon cuore,
Lello
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Palinsesto</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<object
       classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
      codebase="[...]"
      width="400" height="300">
  <param name=movie value="1.swf">
      <param name=quality value=high>
      <param name=bgcolor value=#CCCCCC>
      <embed
            src="1.swf"
            quality="high"
            bgcolor="#CCCCCC"
            width="400"
            height="300"
            type="application/x-shockwave-flash"
            pluginspage="[...]">
      </embed>
</object>
<script language="JavaScript">
function palinsesto()
{
   var today = new Date();
   var hrs = today.getHours();
   var giorno = today.getDay();
   var onair=document.writeln("<LEFT>");
if ((hrs >=0) && (hrs <8) && (giorno =1))
      document.write("A1 COMPILATION");
else if ((hrs >=8) && (hrs <9) && (giorno =1))
 document.write("BREAKFAST TIME con Salvo Grippaldi");
else if ((hrs >=9) && (hrs <11) && (giorno =1))
 document.write("DRIZZATI LE ANTENNE con Paola Nicotra");
else if ((hrs >=11) && (hrs <13) && (giorno =1))
 document.write("SNACK MUSIC - ROTATION");
else if ((hrs >=13) && (hrs <14) && (giorno =1))
 document.write("80 SPECIAL - Solo Successi Anni 80");
else if ((hrs >=14) && (hrs <16) && (giorno =1))
 document.write("RADIO KOMMANDO con Miki Mantegna");
else if ((hrs >=16) && (hrs <18) && (giorno =1))
 document.write("PASSWORD con Davide");
else if ((hrs >=18) && (hrs <20) && (giorno =1))
 document.write("E' ANCORA PIU' TOSTO con Roberto Puccia");
else if ((hrs >=20) && (hrs <21) && (giorno =1))
 document.write("SNACK MUSIC con Giuseppe Varancelli");
else if ((hrs >=21) && (hrs <23) && (giorno =1))
 document.write("COOL INSIDE con Benny Gioeni");
else if ((hrs >=23) && (hrs <24) && (giorno =1))
 document.write("NOTTI MAGICHE");
else if ((hrs >=0) && (hrs <2) && (giorno >=2) && (giorno <=5))
      document.write("NOTTI MAGICHE");
else if ((hrs >=2) && (hrs <8) && (giorno >=2) && (giorno <=5))
      document.write("A1 COMPILATION");
else if ((hrs >=8) && (hrs <9) && (giorno >=2) && (giorno <=5))
      document.write("BREAKFAST TIME con Salvo Grippaldi");
else if ((hrs >=9) && (hrs <11) && (giorno >=2) && (giorno <=5))
      document.write( "DRIZZATI LE ANTENNE con Paola Nicotra");
else if ((hrs >=11) && (hrs <13) && (giorno >=2) && (giorno <=5))
      document.write("SNACK MUSIC - ROTATION");
else if ((hrs >=13) && (hrs <14) && (giorno >=2) && (giorno <=5))
      document.write("80 SPECIAL - Solo Successi Anni 80");
else if ((hrs >=14) && (hrs <16) && (giorno >=2) && (giorno <=5))
      document.write("RADIO KOMMANDO con Miki Mantegna");
else if ((hrs >=16) && (hrs <18) && (giorno >=2) && (giorno <=5))
      document.write( "PASSWORD con Davide");
else if ((hrs >=18) && (hrs <20) && (giorno >=2) && (giorno <=5))
      document.write("E' ANCORA PIU' TOSTO con Roberto Puccia");
else if ((hrs >=20) && (hrs <21) && (giorno >=2) && (giorno <=5))
      document.write("SNACK MUSIC con Giuseppe Varancelli");
else if ((hrs >=21) && (hrs <23) && (giorno >=2) && (giorno <=4))
      document.write("COOL INSIDE con Benny Gioeni");
else if ((hrs >=21) && (hrs <23) && (giorno =5))
      document.write("COOL INSIDE con Benny Gioeni & Fernando");
else if ((hrs >=23) && (hrs <24) && (giorno =5))
      document.write("KAMASUTRA CHART con Miki Mantegna e Sergio Puglisi");
else if ((hrs >=0) && (hrs <3) && (giorno =6))
      document.write("KAMASUTRA PROJECT DJ ROTATION con Fabio Massimino,
Corradino, Ninni Parisi");
else if ((hrs >=3) && (hrs <8) && (giorno =6))
      document.write("A1 COMPILATION");
else if ((hrs >=8) && (hrs <10) && (giorno =6))
      document.write("SNACK MUSIC - ROTATION");
else if ((hrs >=10) && (hrs <12) && (giorno =6))
      document.write("A1 CHART con Roberto Puccia e EA DJ");
else if ((hrs >=12) && (hrs <14) && (giorno =6))
      document.write("90 SPECIAL");
else if ((hrs >=14) && (hrs <15) && (giorno =6))
      document.write("HIT TRAX");
else if ((hrs >=15) && (hrs <16) && (giorno =6))
      document.write("UNZ UNZ CHART con Paola & Sonny DJ");
else if ((hrs >=16) && (hrs <17) && (giorno =6))
      document.write("90 SPECIAL DANCE VERSION con Alberto Zappalà");
else if ((hrs >=17) && (hrs <18) && (giorno =6))
      document.write("WORLD PILL'S con Davide e Salvo Spampinato");
else if ((hrs >=18) && (hrs <19) && (giorno =6))
      document.write("RAP ATTACK con Loredana & Alex Duchene");
else if ((hrs >=19) && (hrs <20) && (giorno =6))
      document.write("90 SPECIAL");
else if ((hrs >=20) && (hrs <22) && (giorno =6))
      document.write("A1 CHART con Roberto Puccia e EA DJ (Reply)");
else if ((hrs >=22) && (hrs <23) && (giorno =6))
      document.write("UNZ UNZ CHART con Paola & Sonny DJ (Reply)");
else if ((hrs >=23) && (hrs <24) && (giorno =6))
      document.write("COOL INSIDE con Benny Gioeni & Fernando");
else if ((hrs >=0) && (hrs <1) && (giorno =7))
      document.write("COOL INSIDE con Benny Gioeni & Fernando");
else if ((hrs >=1) && (hrs <2) && (giorno =7))
      document.write("KAMASUTRA CHART con Miki Mantegna e Sergio Puglisi");
else if ((hrs >=2) && (hrs <5) && (giorno =7))
      document.write("KAMASUTRA PROJECT DJ ROTATION con Fabio Massimino,
Corradino, Ninni Parisi");
else if ((hrs >=5) && (hrs <8) && (giorno =7))
      document.write("A1 COMPILATION");
else if ((hrs >=8) && (hrs <11) && (giorno =7))
      document.write("HIT TRAX");
else if ((hrs >=11) && (hrs <14) && (giorno =7))
      document.write("SNACK MUSIC - ROTATION");
else if ((hrs >=14) && (hrs <15) && (giorno =7))
      document.write("UNZ UNZ CHART con Paola & Sonny DJ (Reply)");
else if ((hrs >=15) && (hrs <17) && (giorno =7))
      document.write("A1 CHART con Roberto Puccia e EA DJ (Reply)");
else if ((hrs >=17) && (hrs <18) && (giorno =7))
      document.write("WORLD PILL'S con Davide e Salvo Spampinato");
else if ((hrs >=18) && (hrs <20) && (giorno =7))
      document.write("80 SPECIAL - Solo Successi Anni 80");
else if ((hrs >=20) && (hrs <21) && (giorno =7))
      document.write("RAP ATTACK con Loredana & Alex Duchene (Reply)");
else if ((hrs >=21) && (hrs <23) && (giorno =7))
      document.write("CAFE' DEL MAR - CHILL OUT GENERATION");
else if ((hrs >=23) && (hrs <24) && (giorno =7))
      document.write("90 SPECIAL DANCE VERSION con Alberto Zappala'");
else
      document.write("NOBODY IS ON AIR");
}
palinsesto();
</script>
</script>
</body>
</html>

 ha scritto nel messaggio
news:1105188136.3...@c13g2000cwb.googlegroups.com...
inoltre con un db avrai + facilitate le operazioni di ricerca sia per
programma che per conduttore, ora, ecc.. (che nn so se metterai nel
sito ma sono interessanti: se uno ad es nn sa a che ora c'č un prog,
con il tuo sistema e basta, come fa a cercarla!?!?; e anche con questo
sistema del javascript nn si puň sapere, a meno di nn editare tutta la
pagina...)



Mi chiedevo se la variabile che ho chiamato onair (var
onair=document.writeln("<LEFT>");) è settata in maniera esatta. La mia idea
era quella di prendere questa variabile (sempre se scritta con una sintassi
corretta) e passarla alla casella di testo in flash.
Questo qua sotto è l'ultima versione del codice redatto ... (con tanto di
swLiveconnect)
Lello
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Palinsesto</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<object
       classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
      codebase="[...]"
      width="400" height="300" id="onair">
      <param name=movie value="1.swf">
      <param name=quality value=high>
      <param name=bgcolor value=#CCCCCC>
      <embed
            src="1.swf"
            quality="high"
            bgcolor="#CCCCCC"
            width="400"
            height="300"
   swLiveConnect="true"
            name="onair"


 ha scritto nel messaggio
news:1105191818....@c13g2000cwb.googlegroups.com...
di come passare i dati a flsah da java nn ne so un granc kč..nn mi č
mai capitato di doverlo fare...

Ok! Ma ce la farò ... ;-)
Per prima cosa, nel tuo codice ci sono degli errori, giorno=x non
controlla se giorno e' uguale a x ma setta giorno ad x, devi usare
giorno==x
Vediamo se ho capito :-)
Hai un object flash che visualizza il segnale verde per on air, da
javascript vuoi scrivere nell'oggetto flash il nome del programma e
del presentatore. Giusto?
Allora, per prima cosa credo che al momento esistano problemi a
livello crossbrowser. 
Per spiegare meglio la cosa, gli scriptable plugins implementati con
la tecnologia di Netscape 4.7x che esponevano i loro metodi tramite
LiveConnect non sono piu' supportati da i nuovi browser Gecko. Questi,
teoricamente, fanno uso delle nuove API per i plugins definite di
recente.  Se non mi sbaglio, il problema e' che non tutti i nuovi
browser hanno gia' implementato queste API. Con questi browser non
sarai in grado di modificare il testo all'interno dell'oggetto flash.
Ti faccio un esempio su come puoi farlo, il problema e' che l'unico
modo che ho per creare un flash e' tramite Ming, quindi ti dovrai
sorbire anche del codice PHP :-)
========
<?php 
Ming_setScale(20.00000000);
ming_useswfversion(6);
$movie=new SWFMovie();
$movie->setDimension(250,50);
$movie->setBackground(128,200,255);
$movie->setRate(12); 
$circleshape = new SWFShape();
$circleshape->setRightFill(0,255,0);
$circleshape->drawCircle(20);
$i=$movie->add($circleshape);
$i->moveTo(25,25);
$strAction="
_root.createTextField('onair',++depth,50,10,190,30);
buttonTextField.border = true; 
buttonTextField.selectable = false;
buttonTextField.text = 'On Air'; ";
$movie->add(new SWFAction(str_replace("\r", "", $strAction)));
$movie->save("onair.swf");
?>
<html>
<head>
<script type="text/javascript">
function dwrite(s){
// object con flash
 f=document.getElementById("onair");
 try{
	// usa il metodo SetVariable di flash per modificare 
	// il testo in flash
	f.SetVariable("_root.onair.text", s);
 } catch(e){alert(e);}
}
function palinsesto()
{
// questa e' la tua funzione
   var today = new Date();
   var hrs = today.getHours();
   var giorno = today.getDay();
if ((hrs >=0) && (hrs <8) && (giorno ==1))
      dwrite("A1 COMPILATION")
else if ((hrs >=8) && (hrs <9) && (giorno ==1))
 dwrite("BREAKFAST TIME con Salvo Grippaldi")
else if ((hrs >=9) && (hrs <11) && (giorno ==1))
 dwrite("DRIZZATI LE ANTENNE con Paola Nicotra")
else if ((hrs >=11) && (hrs <13) && (giorno ==1))
 dwrite("SNACK MUSIC - ROTATION")
else if ((hrs >=13) && (hrs <14) && (giorno ==1))
 dwrite("80 SPECIAL - Solo Successi Anni 80")
else if ((hrs >=14) && (hrs <16) && (giorno ==1))
 dwrite("RADIO KOMMANDO con Miki Mantegna")
else if ((hrs >=16) && (hrs <18) && (giorno ==1))
 dwrite("PASSWORD con Davide");
else if ((hrs >=18) && (hrs <20) && (giorno ==1))
 dwrite("E' ANCORA PIU' TOSTO con Roberto Puccia")
else if ((hrs >=20) && (hrs <21) && (giorno ==1))
 dwrite("SNACK MUSIC con Giuseppe Varancelli")
else if ((hrs >=21) && (hrs <23) && (giorno ==1))
 dwrite("COOL INSIDE con Benny Gioeni")
else if ((hrs >=23) && (hrs <24) && (giorno ==1))
 dwrite("NOTTI MAGICHE")
// tutti gli altri programmi che hai inserito
else
      dwrite("NOBODY IS ON AIR");
}
</script>
</head>
<body onload="setTimeout(palinsesto,1000);">
<object id="onair" type="application/x-shockwave-flash"
data="onair.swf" width="250" height="50">
 <param name="movie" value="onair.swf" />
</object>
</html> 
========
In pratica nel filmato flash hai un oggetto di tipo TextField (
_root.createTextField('onair',++depth,50,10,190,30);) con nome onair e
nella funzione javascript usi SetVariable per modificarne il testo.
Io ho usato un oggetto TextField, probabilmente puoi usare anche
qualcosa d'altro ma non conosco abbastanza flash per darti qualche
indicazione.
NB
Riguardo la compatibilita' crossbrowser:
Funziona con Firefox 1.0 e IE 6.0
NON Funziona con Mozilla 1.75 e 1.8 alpha 5 e Opera 1.73
Teoricamente mi sembrava che dovesse funzionare anche con la 1.8a5 di
Mozilla (stando a quanto definito nella documentazione che avevo
trovato sul sito), ma, almeno sul mio pc, non va.
Se vuoi risolvere il problema di compatibilita' dovresti fare tutto
all'interno dell'object flash, usando action script per modificare il
testo da visualizzare.
BTW il codice PHP fa uso del modulo Ming 0.3beta1, con altre versioni
potrebbe non funzionare.
'bye

 >Ok! Ma ce la farň ... ;-)


Ti ringrazio molto ma cosě non posso risolvere il problema  ... ;-)
Non concentrarti particolarmente sul codice PHP, mi serviva solo per
generare un filmato flash :-)
In pratica tu hai un filmato flash, questo ha al suo interno diverse
cose, una di queste e' l'oggetto con cui visualizzi la tua scritta,
nel mio esempio era un TextField. Nel tuo filmato flash puoi saperlo
solo tu che cosa e' (hai gia' un filmato flash o comunque sei tu che
lo sviluppi o puoi definire come deve essere?)
Nel mio esempio assegnando alla property text  di TextField una
stringa fa si che questa venga visualizzata nel filmato flash. Per
fare questo c'e' il codice Javascript della funzione:
 function dwrite(s){
 // object con flash
  f=document.getElementById("onair");
  try{
 // usa il metodo SetVariable di flash per modificare
 // il testo in flash
 f.SetVariable("_root.onair.text", s);
  } catch(e){alert(e);}
 }
L'oggetto TextField nel mio filmato si chiamava onair ed era
"posizionato sotto" _root, quindi usando il metodo SetVariable di
flash in questo modo: SetVariable("_root.onair.text", "pippo"); si
assegna il valore "pippo" al TextField e il testo viene visualizzato
nel filmato flash.
Cosa contiene il tuo filmato flash? Hai la possibilita' di modificare
la scritta visualizzata con SetVariable?
Alternativa gia' suggerita: quando crei il filmato flash usa action
script e il codice della tua funziona palinsesto() opportunamente
modificato per fare tutto nel filmato flash.
'bye