Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 34 di 44
  • livello principiante
Indice lezioni

Caricare un filmato in un frame preciso

Richiamare una pagina html contenente un filmato, ed avviarlo da un frame diverso dal primo
Richiamare una pagina html contenente un filmato, ed avviarlo da un frame diverso dal primo
Link copiato negli appunti

SCOPO

Aprire un filmato in un frame preciso diverso dal primo

STRUMENTI

Passaggio di variabili via codice

È necessario provare l'esempio o in rete, o nel webserver. In locale, il passaggio di variabili via URL non funziona.

METODO

Abbiamo due filmati: da uno vogliamo richiamare l'altro, e mandarlo ad un frame preciso. Il secondo filmato, o meglio, la pagina html che lo incorpora, può essere aperta nella stessa finestra della pagina chiamante, o in una nuova. Da Flash, questa operazione si ottiene rispettivamente con:

on(release){

getURL("filmato.html", "_self");

}

e con:

on(release){

getURL("filmato.html", "_blank");

}

Il filmato chiamante

I pulsanti del primo filmato usano questi due script, con una piccola aggiunta: il numero di frame a cui rimandare il secondo filmato.

Ad esempio, se vogliamo aprire la pagina html con il secondo filmato nella stessa finestra della pagina chiamante, e mandare il filmato al frame 5, scriveremo:

on(release){

getURL("filmato.html?frame=5", "_self");

}

Se vogliamo aprirla in una nuova finestra, e mandare il filmato al frame 8:

on(release){

getURL("filmato.html?frame=8", "_blank");

}

Se non vogliamo mandare il filmato ad alcun frame particolare, ma farlo partire dal primo, basterà omettere l'aggiunta:

on(release){

getURL("filmato.html", "_self");

}

Il filmato chiamato

Il trucco sta nel filmato che viene richiamato, e nella pagina html che lo contiene: lo scopo, è quello di creare al volo il codice di incorporamento del filmato, aggiungendo ai tag opprtuni la parte "?frame=x".

Senza entrare nello specifico, il document.write() serve a scrivere al volo una parte di codice html: riceve come parametro una stringa, e la scrive come codice che viene subito interpretato dal browser. In questo modo, componiamo il codice di incorporamento: per ragioni di spazio, linko al codice in un file esterno.

Alcune particolarità:

• il document.write è un comando Javascript e va inserito all'interno degli appositi tag <script>. In questo caso non è definito nel tag <head>, ma direttamente nel body, in modo da essere eseguito immediatamente e senza essere richiamato in maniera esplicita.

• la stringa passata al document.write, può essere composta come concatenamento di sottostringhe:

document.write('stringa' + 'stringa' + 'stringa')

• il contenuto di una sottostringa deve essere scritto tutto su una riga, mentre le sottostringhe possono essere separate su righe diverse:

document.write('stringa tutta su una riga'

+ 'stringa tutta su una riga'

+ 'stringa tutta su una riga')

• guardando il contenuto, vediamo che in due soli punti viene inserita una variabile creata al momento ( questo è il secondo caso):

+ '<EMBED src="filmato.swf' +document.location.search+'" '

Stiamo quindi passando, come sottostringa, una variabile, il cui nome è document.location.search. Cos'è questa variabile? È una stringa contenente tutto cioè che appare nella barra degli indirizzi del browser dopo il nome e l'estensione della pagina richiesta:

Barra degli indirizzi

Barra degli indirizzi

E quello è proprio il tipo di indirizzo che troviamo quando richiamiamo la pagina con questo codice:

on(release){

getURL("filmato.html?frame=5", "_self");

}

Arrivati qui, il codice di incorporamento che ottieniamo è questo:

<HTML>

<HEAD>

<TITLE>Filmato</TITLE>

</HEAD>

<BODY bgcolor="#CCCCCC">

<OBJECT

classid="[...]"

codebase="[...]"

WIDTH=400 HEIGHT=200>

<PARAM NAME=movie VALUE="filmato.swf?frame=5">

<PARAM NAME=quality VALUE=high>

<PARAM NAME=bgcolor VALUE=#CCCCCC>

<EMBED

src="filmato.swf?frame=5"

quality=high

bgcolor=#CCCCCC

WIDTH=400

HEIGHT=200

TYPE="application/x-shockwave-flash"

PLUGINSPAGE="[...]">

</EMBED>

</OBJECT>

</script>

</BODY>

</HTML>

che, come spiegato qui, passa a flash la variabile frame con valore 5.

Dentro il filmato, nel primo frame della timeline principale, utilizziamo questa variabile per spostare la testina di riproduzione al frame richiesto, dopo averla convertita in numero:

_root.gotoAndStop(Number(frame));

Se non richiediamo alcun frame, o se apriamo direttamente la pagina del filmato finale senza che questa venga lanciata dal primo, il valore della variabile "frame" non è definito in modo opportuno, e il metodo fallisce silenziosamente (come se non fosse scritto).

FILE

visualizza l'esempio | scarica l'esempio


Ti consigliamo anche