Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Actionscript chiama Javascript - classe ExternalInterface di Flash CS3

This is a discussion on Actionscript chiama Javascript - classe ExternalInterface di Flash CS3 within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Buon Lunedì a tutti! Abbiamo già visto come aprire una popup utilizzando Actionscript e Javascript . La tecnica rimane sempre la ...


Go Back   Forum Flash CS3 Flash CS4 > Flash CS3 e Actionscript 3.0 > Articoli e tutorials

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  1 links from elsewhere to this Post. Click to view. #1 (permalink)  
Old 22-10-07, 07:41
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Actionscript chiama Javascript - classe ExternalInterface di Flash CS3

Buon Lunedì a tutti!

Abbiamo già visto come aprire una popup utilizzando Actionscript e Javascript.
La tecnica rimane sempre la stessa, cambia solo la sintassi Actionscript 3.0 che invece di sare il metodo getURL usa navigateToURL.

In questi giorni però mi sono nate alcune domande dopo aver letto un post di un utente, precisamente questo .
Per chi non avesse dimestichezza con l' inglese, l' autore del post mi ha posto di fronte ad una problematica, e cioè:
supponiamo di avere 300 immagini che vengono caricate in Flash ed usate come anteprime. Ognuna di esse al click deve aprire una popup con l' immagine a dimensioni originali ( come ad esempio succede nello Scroller di immagini creato da FlepStudio ).
In questo caso dovremmo creare una pagina html per ogni immagine con inserita appunto l' immagine corrispondente e poi aprirla da Flash come una popup.
300 immagini ??? Fare 300 pagine html ??? Eh già... decisamente scomodo e lento.

Studiandoci sopra, ho trovato una soluzione utilizzando la classe ExternalInterface di ActionScript 3.0 ed una funzione Javascript.
Questa soluzione mi permette di creare una popup in runtime, quindi senza dover creare la pagina html per ogni immagine.

Vediamo come fare...

Prima di tutto bisogna capire bene come funziona la classe ExternalInterface di Actionscript 3.0 .
Questa classe mette in comunicazione Actionscript e Javascript tramite la pagina HTML in cui è inserito l' SWF.
Con ExternalInterface ( che è la sostituta del vecchio metodo fscommand() ) possiamo facilmente eseguire le seguenti operazioni:

Da Actionscript a javascript:
Chiamare qualsiasi funzione Javascript.
Passare qualsiasi numero o argomento con qualsiasi nome.
Passare qualsiasi tipo di variabile ( Boolean, String, Number, ecc ecc ).
Ricevere dei valori dalla funzione Javascript.

Da Javascript ad Actionscript:
Chiamare una funzione Actionscript.
Passare argomenti.
Ricevere dei valori dalla funzione Actionscript.

L' SWF e le funzioni Javascript devono risiedere nello stesso file HTML.

Oggi vediamo un esempio concreto di Actionscript che chiama Javascript.

creo un FLA che salvo con nome ' main.fla '.
Al suo interno inserisco sullo stage un bottone con nome istanza ' send_btn ' al quale assegno la seguente azione:
Code:
send_btn.addEventListener(MouseEvent.MOUSE_DOWN,callJS);

function callJS(evt:MouseEvent):void
{
	ExternalInterface.call("createPopup","http://www.flepstudio.org/swf/mix/ExternalInterface/pic.jpg","500","333");
}
Questo comando, al click del bottone, chiamerà tramite il metodo statico call() della classe ExternalInterface una funzione Javascript con nome createPopup e gli passerà 3 valori: l' url di una immagine, la larghezza dell' immagine e l' altezza dell' immagine.

Pubblico questo SWF ed lo inserisco in una pagina HTML che chiamo main.html e che avrà implementata la funzione Javascript createPopup.
In questo esempio, guarda caso, ho scritto una funzione Javascript che crea un popup e gli inerisce una immagine ( vuole 3 parametri: immagine, width ed height ) e posiziona la popup al centro del monitor.
Quindi, subito dopo il tag della pagina HTML che contiene l' SWF, inserisco la funzione:
HTML Code:
<script language="JavaScript">
	function createPopup(image,ww,hh)
	{
		var winleft = (screen.width - ww) / 2;
		var contentWindowBEGIN='<html><head><title>Image</title></head><body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"><img src="';
		var contentWindowEND='" alt="" onclick="window.close()" style="cursor: pointer;"></body></html>';
		var winUp = (screen.height - hh) / 2;
		var style = 'left='+winleft+',top='+winUp+', width='+ww+', height='+hh+', status=no, menubar=no, toolbar=no, scrollbars=0';
		newwin=window.open("", "", style);
		newwin.document.write(contentWindowBEGIN+image+contentWindowEND);
	}
</script>
Carico sul server: main.html, main.swf e una immagine che per questo esempio io ho chiamato pic.jpg .

Potete provare il mio esempio, andando al seguente url:
http://www.flepstudio.org/swf/mix/Ex...face/main.html

Domani vedremo un esempio in cui sarà Javascript a chiamare Actionscript.

Stay tuned!
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #2 (permalink)  
Old 22-10-07, 11:00
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Re: Actionscript chiama Javascript - classe ExternalInterface di Flash CS3

Un piccolo aggiornamento.
Un caro amico di OrigamiStudio mi ha fatto giustamente notare una cosa.
Usando l' evento MOUSE_DOWN, il sistema interpreta la popup come una popup da bloccare.
Per ovviare al problema bisogna utilizzare l' evento MOUSE_CLICK.
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #3 (permalink)  
Old 21-03-08, 15:11
Junior Member
 
Join Date: Mar 2008
Posts: 1
Rep Power: 0
felice is on a distinguished road
Riferimento: Actionscript calls Javascript - ExternalInterface class of Flash CS3

Problema: Uso ExternalInterface per richiamare codice javascript da una animazione Flash/Actionscript; ma riscontro un problema: la pagina con il filmato quando viene caricata (in Explorer) non riesce a richiamare nessuna delle funzioni javascript che ho posto in un file js ed anzi mi va in errore di visualizzazione. Da precisare che sto eseguendo il tutto in un contesto .jsp

Qualcuno di voi ha già sbattuto la testo su un problema simile??

saluti e grazie per suggerimenti
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #4 (permalink)  
Old 24-03-08, 08:57
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Re: Actionscript chiama Javascript - classe ExternalInterface di Flash CS3

Ciao felice e benvenuto

La classe ExternalInterface funziona solo se chiami del codice JS che risiede nel file HTML che contiene l' SWF.
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #5 (permalink)  
Old 04-08-08, 10:48
Member
 
Join Date: Jul 2008
Posts: 30
Rep Power: 0
dadoge is on a distinguished road
Re: Actionscript chiama Javascript - classe ExternalInterface di Flash CS3

grandissimo Flep...

Ho utilizzato l'idea per caricare un iframe, e funziona alla grande, posto il procedimento a fini didattici:



in ActionScript:

...

import flash.external.*;

...

private function init(evt:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE,init);

stage.frameRate=31;

url_array=new Array(
'pagina1.html',
'workshop/PhotoNavigator/main_photoview.html',
'pagina3.html',
'pagina4.html',
'pagina5.html',
'pagina6.html',
'pagina7.html',
'pagina8.html',
'pagina9.html',
'pagina10.html');

initMenu();
createContainers();
loadXML();
}

...

private function goURL(evt:MouseEvent):void
{

var link:String=url_array[evt.target.id]

ExternalInterface.call("cambia",link);

}
...



in HTML nel main.html generato dalla pubblicazione, ho aggiunto:


HTML Code:
    function cambia(url)
   {
   window.frames["pagina"].location.href = url;
window.iframeName.location.href = url;
   }
 
...
 iframe name="pagina" src="pagina1.html" width="1000" height="650" frameborder="0" > 
(ho omesso un < in iframe per la pubblicazione) in pratica in apertura visualizza pagina1. html, e cliccando sul menù in flash sostituisce le varie pagine...

...ho ottenuto lo stesso risultato che avrei voluto ottenere caricando in una animazione flash altre animazioni esterne...ma non c'è stato verso (errori tipo, oggetto nullo o anche il movieclip non è in grado di contenere ecc..adesso non ricordo con esattezza)

...mi sorge spontanea la domanda:

finchè in Sezioni metto semplici animazioni tutto bene ma se voglio caricare ad esempio il PhotoNavigator nascono i problemi...perchè?????
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Flash Multi Gallery
  #6 (permalink)  
Old 18-10-08, 19:49
Junior Member
 
Join Date: Jul 2008
Posts: 3
Rep Power: 0
zeno is on a distinguished road
Re: Actionscript chiama Javascript - classe ExternalInterface di Flash CS3

Come mai questo metodo non funziona con IE???
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump

Similar Threads

Thread Thread Starter Forum Replies Last Post
Javascript chiama Actionscript 3.0 Flep Articoli e tutorials 11 28-11-08 16:55
Actionscript calls Javascript - ExternalInterface class of Flash CS3 Flep Tutorials 1 21-10-08 16:30
Classe ExternalInterface ulisse46 Actionscript 3.0 avanzato 0 04-04-08 02:17
Interazione actionscript 2.0 - Javascript Twincpu Actionscript 3.0 base 1 18-02-08 19:43
javascript in actionscript 3.0 markuspedro Actionscript 3.0 base 4 01-02-08 11:45


All times are GMT. The time now is 10:39.


Powered by vBulletin versione 3.7.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0 RC4
Forum SiteMap


FlepStudio
by Filippo Lughi
P.IVA 03605860406