Creare un nuovo skin

Il modo migliore per creare un file SWF dello skin è di copiare uno dei file di skin di Flash e usarlo come punto di partenza. I file FLA per questi skin si trovano nella cartella dell'applicazione Flash in Configuration/FLVPlayback Skins/FLA/ActionScript 3.0/. Per rendere disponibile il file finale SWF dello skin come opzione della finestra di dialogo Seleziona skin, inseritelo nella cartella Configuration/FLVPlayback Skins/ActionScript 3.0, nella cartella dell'applicazione Flash o in una cartella locale degli utenti Configuration/FLVPlayback Skins/ActionScript 3.0.

Poiché potete impostare il colore di uno skin anche senza sceglierlo, non è necessario modificare il file FLA per cambiare il colore. Se create uno skin con un colore specifico e non desiderate che sia modificabile nella finestra di dialogo Seleziona skin, impostate this.border_mc.colorMe = false; nel codice ActionScript del file FLA dello skin. Per informazioni sull'impostazione del colore di uno skin, vedete Selezionare uno skin predefinito .

Esaminando i file FLA dello skin installati su Flash, alcuni elementi sullo stage potrebbero sembrare non necessari, ma molti di essi sono inseriti nei livelli guida. Con l'anteprima dal vivo in scala 9, potete verificare velocemente gli elementi effettivamente visualizzati nel file SWF.

Le sezioni seguenti riguardano le personalizzazioni più complesse e le modifiche ai clip filmato SeekBar, BufferingBar e VolumeBar.

Usare il layout dello skin

Quando aprite un file FLA dello skin in Flash, i clip filmato dello skin sono disposti sulla linea temporale principale. Questi clip e il codice ActionScript che si trova sullo stesso fotogramma definiscono la disposizione dei controlli in fase di runtime.

Sebbene il livello Layout appaia molto simile a come verrà visualizzato lo skin in fase di runtime, in questa fase i contenuti del livello non sono visibili. Serve solo a calcolare dove posizionare i controlli. Gli altri controlli presenti sullo stage vengono utilizzati in fase di runtime.

All'interno del livello Layout si trova un segnaposto per il componente FLVPlayback denominato video_mc. Tutti gli altri controlli sono disposti in base a video_mc. Se iniziate con uno dei file FLA di Flash e modificate la dimensione dei controlli, potrebbe essere possibile correggere il layout spostando i clip segnaposto.

Ogni clip segnaposto ha uno specifico nome di istanza. I nomi dei clip segnaposto sono: playpause_mc, play_mc, pause_mc, stop_mc, captionToggle_mc, fullScreenToggle_mc, back_mc, bufferingBar_mc, bufferingBarFill_mc, seekBar_mc, seekBarHandle_mc, seekBarProgress_mc, volumeMute_mc, volumeBar_mc e volumeBarHandle_mc. La parte che viene ricolorata quando scegliete un colore dello skin è detta border_mc.

Non importa quale clip venga utilizzato come controllo. Generalmente, per i pulsanti viene utilizzato il clip di stato normale. Per gli altri controlli vengono utilizzati i clip corrispondenti a quel controllo, ma solo per comodità. Ciò che è veramente importante sono le posizioni x (orizzontale) e y (verticale), l'altezza e la larghezza del segnaposto.

Oltre ai controlli standard, potete disporre di molti tipi di clip aggiuntivi. Il solo requisito per questi clip è accertarvi che per i relativi simboli nella libreria sia selezionato Esporta per ActionScript nella finestra di dialogo Concatenamento. Ai clip personalizzati nel livello Layout potete assegnare un nome di istanza qualsiasi, eccetto i nomi di istanza riservati elencati precedentemente. Il nome di istanza è necessario solo per l'impostazione di ActionScript sui clip al fine di determinare il layout.

Il clip border_mc è particolare. Se impostate la proprietà FlvPlayback.skinAutoHide su true , lo skin mostra quando il mouse si trova sul clip border_mc. Ciò è importante per gli skin che appaiono al di fuori dei limiti del lettore video. Per informazioni sulla proprietà skinAutoHide , vedete Modificare il comportamento di uno skin .

Tra i file FLA di Flash, border_mc viene usato per il colore di sfondo e per il bordo intorno ai pulsanti Avanti e Indietro.

Il clip border_mc fa parte anche dello skin i cui valori alfa e di colore vengono modificati dalle proprietà skinBackgroundAlpha e skinBackgroundColor . Per consentire l'uso di valori alfa e di colore personalizzabili, il codice ActionScript nel file FLA dello skin deve includere il codice seguente:

border_mc.colorMe = true;

ActionScript e il layout dello skin

In genere, il seguente codice ActionScript viene applicato a tutti i controlli. Alcuni controlli hanno un codice specifico ActionScript che definisce un comportamento aggiuntivo; questo viene spiegato nella sezione che riguarda quel determinato controllo.

Il codice ActionScript iniziale è una sezione estesa che specifica i nomi di classe per ogni stato di ogni componente. Potete visualizzare tutti questi nomi di classe nel file SkinOverAll.fla. Ad esempio, per i pulsanti Riproduci e Pausa il codice è simile al seguente:

this.pauseButtonDisabledState = "fl.video.skin.PauseButtonDisabled"; 
this.pauseButtonDownState = "fl.video.skin.PauseButtonDown"; 
this.pauseButtonNormalState = "fl.video.skin.PauseButtonNormal"; 
this.pauseButtonOverState = "fl.video.skin.PauseButtonOver"; 
this.playButtonDisabledState = "fl.video.skin.PlayButtonDisabled"; 
this.playButtonDownState = "fl.video.skin.PlayButtonDown"; 
this.playButtonNormalState = "fl.video.skin.PlayButtonNormal"; 
this.playButtonOverState = "fl.video.skin.PlayButtonOver";

I nomi di classe non dispongono in effetti di file di classe esterni; vengono specificati solo nella finestra di dialogo Concatenamento per tutti i clip filmato presenti nella libreria.

Nel componente ActionScript 2.0, sullo stage erano presenti clip filmato usati effettivamente in fase di runtime. Nel componente ActionScript 3.0, questi clip filmato sono ancora contenuti nel file FLA ma solo per rendere più comode le operazioni di modifica. Ora sono tutti nei livelli guida e non vengono esportati. Tutte le risorse degli skin nella libreria sono impostate su Esporta nel primo fotogramma e vengono create in modo dinamico mediante codice simile al seguente:

new fl.video.skin.PauseButtonDisabled();

Dopo la sezione iniziale, è presente il codice ActionScript che definisce il valore minimo della larghezza e dell'altezza dello skin. Questi valori si trovano nella finestra di dialogo Seleziona skin e vengono usati in fase di runtime per evitare che lo skin venga modificato in scala con dimensioni al di sotto dei valori minimi. Se non desiderate specificare la dimensione minima, lasciate il valore undefined oppure minore o uguale a zero.

// minimum width and height of video recommended to use this skin, 
// leave as undefined or <= 0 if there is no minimum 
this.minWidth = 270; 
this.minHeight = 60;

Per ogni segnaposto potete applicare le seguenti proprietà:

Proprietà

Descrizione

anchorLeft

Boolean. Posiziona il controllo corrispondente sul lato sinistro dell'istanza FLVPlayback. Il valore predefinito è true a meno che anchorRight non venga impostato esplicitamente su true , nel qual caso false diventa il valore predefinito.

anchorRight

Boolean. Posiziona il controllo corrispondente al lato destro dell'istanza FLVPlayback. Il valore predefinito è false .

anchorBottom

Boolean. Posiziona il controllo corrispondente alla parte inferiore dell'istanza FLVPlayback. Il valore predefinito è true , a meno che anchorTop non venga impostato esplicitamente su true , nel qual caso false diventa il valore predefinito.

anchorTop

Boolean. Posiziona il controllo corrispondente alla parte superiore dell'istanza FLVPlayback. Il valore predefinito è false .

Se le proprietà anchorLeft e anchorRight sono entrambe true , il controllo viene modificato in scala orizzontalmente in fase di runtime. Se le proprietà anchorTop e anchorBottom sono entrambe true , il controllo viene modificato in scala verticalmente in fase di runtime.

Per visualizzare gli effetti di queste proprietà, fate riferimento a come vengono usate dagli skin in Flash. I controlli BufferingBar e SeekBar sono gli unici che vengono modificati in scala, sono disposti l'uno sull'altro e hanno entrambi le proprietà anchorLeft e anchorRight impostate su true . La proprietà anchorLeft di tutti i controlli a sinistra dei componenti BufferingBar e SeekBar è impostata su true e la proprietà anchorRight di tutti i controlli a destra di tali componenti è impostata su true . La proprietà anchorBottom di tutti i controlli è impostata su true .

Potete provare a modificare i clip filmato sul livello Layout per creare uno skin in cui i controlli siano collocati nella parte superiore anziché inferiore. È sufficiente spostare i controlli verso l'alto, rispetto a video_mc , e impostare anchorTop su true per tutti i controlli.

Barra di bufferizzazione

La barra di bufferizzazione ha due clip filmato: bufferingBar_mc e bufferingBarFill_mc. È importante stabilire la posizione di ciascun clip sullo stage rispetto agli altri clip, perché le posizioni relative vengono mantenute. La barra di bufferizzazione usa due clip separati, perché il componente modifica in scala il clip bufferingBar_mc ma non il clip bufferingBarFill_mc.

Poiché al clip bufferingBar_mc viene applicata la modifica in scala a 9 porzioni, i margini non si distorcono quando viene modificato in scala. Poiché il clip bufferingBarFill_mc è molto ampio, non è necessario modificare la larghezza. In fase di runtime viene automaticamente mascherato, in modo che venga visualizzata solo la porzione al di sopra del clip allungato bufferingBar_mc. Per impostazione predefinita, le dimensioni esatte della maschera mantengono lo stesso margine verso destra e verso sinistra all'interno del clip bufferingBar_mc, in base alla differenza tra la posizione x (orizzontale) dei clip bufferingBar_mc e bufferingBarFill_mc. Potete personalizzare il posizionamento mediante il codice ActionScript.

Se la barra di bufferizzazione non deve essere modificata in scala o se non utilizza la modifica in scala a 9 porzioni, potete impostarla come il componente personalizzato BufferingBar UI FLV di riproduzione. Per ulteriori informazioni, vedete Componente BufferingBar .

La barra di bufferizzazione ha la seguente proprietà aggiuntiva:

Proprietà

Descrizione

fill_mc:MovieClip

Specifica il nome di istanza del riempimento della barra di bufferizzazione. Il valore predefinito è bufferingBarFill_mc.

Barra di ricerca e barra del volume

Anche la barra di ricerca ha due clip filmato: seekBar_mc e seekBarProgess_mc. È importante stabilire la posizione di ciascuno sul livello Layout rispetto agli altri clip, perché le posizioni relative vengono mantenute. Sebbene entrambi i clip vengano modificati in scala, il clip seekBarProgress_mc non può essere nidificato all'interno di seekBar_mc, perché seekBar_mc utilizza la modifica in scala a 9 porzioni, che non funziona bene con i clip filmato nidificati.

Poiché al clip seekBar_mc viene applicata la modifica in scala a 9 porzioni, i margini non subiscono alcuna distorsione quando viene modificato in scala. Anche il clip seekBarProgress_mc può essere modificato in scala, ma subisce delle distorsioni. Questo clip non utilizza la modifica in scala a 9 porzioni perché è un effetto di riempimento, che non crea problemi di visualizzazione in caso di distorsione.

Il clip seekBarProgress_mc funziona senza fill_mc, analogamente al modo in cui funziona il clip progress_mc nei componenti UI FLV di riproduzione personalizzati. In altre parole, non è mascherato e viene modificato in scala orizzontalmente. Le dimensioni esatte del clip seekBarProgress_mc al 100% sono definite dai margini destro e sinistro all'interno del clip seekBarProgress_mc. Per impostazione predefinita, queste dimensioni sono uguali e si basano sulla differenza tra le posizioni x (orizzontale) di seekBar_mc e seekBarProgress_mc. Potete personalizzare le dimensioni con ActionScript nel clip filmato della barra di ricerca, come mostrato nell'esempio seguente:

this.seekBar_mc.progressLeftMargin = 2; 
this.seekBar_mc.progressRightMargin = 2; 
this.seekBar_mc.progressY = 11; 
this.seekBar_mc.fullnessLeftMargin = 2; 
this.seekBar_mc.fullnessRightMargin = 2; 
this.seekBar_mc.fullnessY = 11;

Potete inserire questo codice sulla linea temporale del clip filmato SeekBar o insieme al resto del codice ActionScript sulla linea temporale principale. Se personalizzate il codice anziché modificare il layout, non è necessario che il riempimento si trovi nello stage, bensì solo nella libreria, impostata su Esporta per ActionScript sul fotogramma 1 e con il nome di classe corretto.

Così come accade per il componente UI FLV di riproduzione personalizzato, potete creare un clip filmato di tipo fullness per la barra di ricerca. Se non dovete modificare in scala la barra di ricerca o se è possibile modificarla in scala ma senza utilizzare la modifica in scala a 9 porzioni, potete impostare progress_mc o fullness_mc adottando uno qualsiasi dei metodi utilizzati per i componenti UI FLV di riproduzione personalizzati. Per ulteriori informazioni, vedete Clip filmato progress e fullness .

Poiché la barra del volume nello skin di Flash non può essere modificata in scala, è stata costruita allo stesso modo del componente VolumeBar UI FLV di riproduzione personalizzato. Per ulteriori informazioni, vedete Componenti SeekBar e VolumeBar . La differenza consiste nella diversa implementazione della maniglia.

Maniglie Seekbar e VolumeBar

Le maniglie SeekBar e VolumeBar sono collocate sul livello Layout vicino alla barra. Per impostazione predefinita, i valori del margine sinistro, del margine destro e dell'asse y della maniglia sono impostati secondo la sua posizione relativa al clip filmato della barra. Il margine sinistro viene impostato in base alla differenza tra la posizione x (orizzontale) della maniglia e la posizione x (orizzontale) della barra, mentre il margine destro è uguale al margine sinistro. Potete personalizzare questi valori mediante ActionScript nel clip filmato SeekBar o VolumeBar. Nell'esempio seguente viene usato lo stesso codice ActionScript dei componenti UI FLV di riproduzione personalizzati:

this.seekBar_mc.handleLeftMargin = 2; 
this.seekBar_mc.handleRightMargin = 2; 
this.seekBar_mc.handleY = 11;

Potete inserire questo codice sulla linea temporale del clip filmato SeekBar o insieme al resto del codice ActionScript sulla linea temporale principale. Se personalizzate il codice anziché modificare il layout, non è necessario che la maniglia si trovi nello stage, bensì solo nella libreria, impostata su Esporta per ActionScript sul fotogramma 1 e con il nome di classe corretto.

A parte queste proprietà, le maniglie sono dei semplici clip filmato che si impostano analogamente ai componenti UI FLV di riproduzione personalizzati. Entrambe hanno lo sfondo rettangolare con la proprietà alpha impostata su 0. Servono solo per aumentare l'area attiva e non sono indispensabili.

Clip di sfondo e di primo piano

I clip filmato chrome_mc e forwardBackBorder_mc vengono implementati come clip di sfondo.

Tra i clip filmato ForwardBackBorder, ForwardBorder e BackBorder sullo stage e i segnaposto dei pulsanti Avanti e Indietro, l'unico clip che non si trova su un livello guida è ForwardBackBorder. I pulsanti Avanti e Indietro vengono usati di fatto soltanto negli skin.

Il solo requisito per questi clip è accertarvi che siano impostati su Esporta per ActionScript sul fotogramma 1 nella libreria.