Se noi guardiamo dalla prospettiva Actionscript, scopriamo che la Timeline di un FLA non è altro che una istanza della Document Class.
Per dichiarare la Document CLass al nostro FLA, bisogna scrivere il nome di tale classe ( senza estensione .as ) nel campo ' Document Class ' del pannello proprietà dello stage ( in basso ), proprio come spiegato nell' articolo che abbiamo già visto che spiega la
migliore forma per dichiarare al FLA una Document Class.
La Document Class deve estendere la classe MovieClip, eccetto per alcuni casi ...
Se noi guardiamo dalla prospettiva Actionscript, scopriamo che la Timeline di un FLA non è altro che una istanza della Document Class.
Per dichiarare la Document CLass al nostro FLA, bisogna scrivere il nome di tale classe ( senza estensione .as ) nel campo ' Document Class ' del pannello proprietà dello stage ( in basso ), proprio come spiegato nell' articolo che abbiamo già visto che spiega la miglior condizione per dichiarare al FLA una propria Document Class.
La Document Class deve estendere la classe MovieClip, eccetto per alcuni casi ...
Quì di seguito, elenco i casi in cui siamo obbligati che tale classe sia sottoclasse della MovieClip:
- Se la timeline contiene del codice sui frames
- Se volessimo controllare la timeline usando i metodi della classe MovieClip
- Se la timeline contiene dei componenti con parametri personalizzati, oppure se:
- i parametri personalizzati dei componenti presenti sulla timeline sono diversi da frame a frame.Per esempio, la proprietà label di un Button è ' OK ' nel primo frame e ' INVIA ' nel secondo frame.
- il componente sullo stage non appare in tutti i frames della timeline
- Se lo Stage della timeline contiene alcuni componenti le cui proprietà sono state personalizzate.
Se il FLA non rientra in nessuno dei precedenti casi, allora la Document Class può ereditare dalla classe Sprite.
Mettiamo caso che abbiamo deciso di assegnare al FLA la DocumentClass con nome ' Main.as ', e quindi la dichiariamo nel pannello proprietà scrivendo ' Main ', ma che ci sbagliamo a scrivere il nome corretto della classe ( per esempio scriviamo ' Maina ' ). Flash genera in automatico una Document class a cui assegnerà il nome ' Maina' e queste classe auto generata da Flash estenderà la classe MovieClip.
Se il FLA non specifica una Document Class, allora la sua Document Class verrà assegnata in automatico da Flash. Se le seguenti condizioni sono riscontrate nel FLA, la classe assegnata in automatico sarà la MovieClip ( flash.display.MovieClip ):
- Lo Stage delle timeline contiene delle istanze senza nome
- La timeline non contiene codice o scripts in alcun frame
- Lo Stage della timeline non contiene componenti con parametri personalizzati
- Lo Stage della timeline non contiene componenti le cui proprietà sono state personalizzate
Se il FLA non rientra in nessuno deiprecedenti casi e la Document Class non è stata assegnata, Flash assegnerà in automatico una Document class che estende la classe MovieClip.
Ogni script sui frames della timeline può essere visto approssimativamente come un metodo istanza della Document Class. Il codice in un frame della timeline può essere eseguito da Flash, indipendentemente dai metodi o proprietà dichirati nella Document Class ( palesemente, purchè non abbiano gli stessi nomi ). D' altro canto, ogni metodo o proprietà della Document class può essere accessibile direttamente da uno script sulla timeline.
Facciamo un esempio:
ho un FLA con nome ' filippo.fla ' a cui assegno una Document class ' Filippo.as ' .
Nella classe Filippo, ho un metodo che chiamo vaiAlSito :
Code:
package
{
import flash.display.MovieClip;
import flash.net.URLRequest;
import flash.net.navigateToURL;
public class Filippo extends MovieClip
{
public function Filippo()
{
}
private function vaiAlSito(url:String):void
{
var richiesta:URLRequest=new URLRequest(url);
navigateToURL(richiesta,'_blank');
}
}
}
adesso viene il bello, nel mio FLA creo un keyframe al frame 9.
Come si nota nella classe Filippo, il metodo vaiAlSito indirizza il browser dell' utente ad un determinato url.
Se noi ora volessimo eseguire la stessa azione dal frame 9 del FLA, avremmo 2 modi:
Code:
var richiesta:URLRequest=new URLRequest('http://www.flepstudio.org');
navigateToURL(richiesta,'_blank');
stop();
Code:
vaiAlSito('http://www.flepstudio.org');
stop();
Questa ' elasticità ' di comunicazione tra la Document Class e la timeline permette anche hai non esperti di utilizzare una Document Class nella quale scrivere le funzioni ( metodi ) che saranno facilmente richiamabili appunto dalla timeline.
Stay tuned!