Regolare le proprietà del colore di un'immagine mediante ActionScript 3

In questo tutorial, impareremo come utilizzare AS3 per creare un RIA in grado di modificare le proprietà del colore di un'immagine, come Luminosità, Contrasto, Tonalità e Saturazione. Continuare a leggere!


Anteprima del risultato finale

Diamo un'occhiata al risultato finale su cui lavoreremo:


Passaggio 1: breve panoramica

Useremo una classe ActionScript nativa che otterrà nuovi valori da un componente Slider e quindi li applicherà all'immagine di destinazione utilizzando la classe ColorMatrixFilter.


Passaggio 2: Impostazioni documento Flash

Avvia Flash e crea un nuovo documento. Imposta la dimensione dello stage su 557x400px e la frequenza fotogrammi su 24 fps.


Passaggio 3: l'interfaccia

L'interfaccia sarà molto semplice; solo un'immagine nello stage che verrà poi modificata dai componenti Sliders nel pannello Adjust Color.


Passaggio 4: Immagine demo

Avremo bisogno di un'immagine per testare la nostra applicazione, selezionarla dalla tua collezione personale o scaricarne una per il test.

Questa è l'immagine della demo, ottenuta da Flickr, con una licenza Creative Commons.

Fiore di Antonio Manchado


Passaggio 5: nomi di istanze

Crea un pannello e quattro cursori con nomi di istanze come mostrato nell'immagine seguente:

Puoi aggiungere barre sopra i cursori come mostrato per migliorare l'aspetto.


Passaggio 6: valori del cursore

Impostiamo i valori dei componenti Slider.

Questi sono ottenuti dai valori minimi e massimi validi della classe AdjustColor, che useremo per regolare ciascuna proprietà:

  • brightSL: Da -100 a 100
  • contSL: Da -100 a 100
  • hueSL: Da -180 a 180
  • satSL: Da -100 a 100

Passaggio 7: nuova classe ActionScript

Crea una nuova classe ActionScript 3.0 (Cmd + N) e salvala come Main.as nella tua cartella di classe.


Step 8: Struttura della classe

Crea la tua struttura di base per iniziare a scrivere il tuo codice.

> pacchetto import flash.display.Sprite; public class Main estende Sprite public function Main (): void // constructor code

Passaggio 9: Classi richieste

Queste sono le classi che dovremo importare affinché la nostra classe funzioni; il importare direttiva rende disponibili classi e pacchetti definiti esternamente al codice.

 import flash.display.Sprite; import fl.motion.AdjustColor; import flash.filters.ColorMatrixFilter; importare fl.events.SliderEvent;

Passaggio 10: variabili

Queste sono le variabili che useremo; leggi i commenti nel codice per saperne di più su di loro.

 colore var privato: AdjustColor = new AdjustColor (); // Questo oggetto manterrà le proprietà dei colori private var filter: ColorMatrixFilter; // Memorizzerà il filtro colorato modificato per cambiare l'immagine

Passaggio 11: costruttore

Il costruttore è una funzione che viene eseguita quando un oggetto viene creato da una classe; questo codice è il primo ad essere eseguito quando si crea un'istanza di un oggetto, o in questo caso viene eseguito quando viene caricato il file SWF, come nella classe del documento.

Eseguirà le azioni necessarie per avviare l'applicazione.

 funzione pubblica finale Main (): void // Code

Passaggio 12: matrice iniziale

La matrice di colori verrà generata dai valori memorizzati nelle proprietà AdjustColor; abbiamo bisogno di impostare i valori iniziali per queste proprietà al fine di ottenere una matrice corretta. Se non lo facciamo, verrà generato un array con valori null.

 / * Necessario per creare Matrix iniziale * / color.brightness = 0; color.contrast = 0; color.hue = 0; color.saturation = 0; / * Questa funzione aggiungerà i necessari listener di eventi * / addListeners ();

Passaggio 13: aggiungi gli ascoltatori di slider

Questa funzione aggiunge listener ai componenti Slider per chiamare determinate funzioni ogni volta che i loro valori cambiano.

 funzione finale privata addListeners (): void colorPanel.brightSL.addEventListener (SliderEvent.CHANGE, adjustBrightness); colorPanel.contSL.addEventListener (SliderEvent.CHANGE, adjustContrast); colorPanel.hueSL.addEventListener (SliderEvent.CHANGE, adjustHue); colorPanel.satSL.addEventListener (SliderEvent.CHANGE, adjustSaturation); 

Step 14: Luminosità

Questa funzione modifica il valore di Luminosità, ottenendo i suoi dati da brightSL componente di scorrimento.

 funzione finale privata adjustBrightness (e: SliderEvent): void color.brightness = e.target.value; aggiornare(); 

Step 15: Contrasto

Questa funzione modifica il valore del Contrasto, ottenendo i suoi dati dal contSL componente di scorrimento.

 funzione finale privata adjustContrast (e: SliderEvent): void color.contrast = e.target.value; aggiornare(); 

Passaggio 16: tonalità

Questa funzione modifica il valore di tonalità, ottenendo i suoi dati dal hueSL componente di scorrimento.

 private final function adjustHue (e: SliderEvent): void color.hue = e.target.value; aggiornare(); 

Quando modifichi la tonalità di un colore, lo sposti attorno alla ruota dei colori per il numero specificato di gradi.


Step 17: Saturazione

Questa funzione modifica il valore di Saturazione, ottenendo i suoi dati dal satSL componente di scorrimento.

 private final function adjustSaturation (e: SliderEvent): void color.saturation = e.target.value; aggiornare(); 

Quando modifichi la saturazione di un colore, lo sposti verso o lontano dal centro della ruota dei colori.


Passaggio 18: Funzione di aggiornamento

Questa funzione è chiamata in ogni cambio del cursore. Si rinnova il ColorMatrixFilter valore e lo applica all'immagine in scena.

 private final function update (): void filter = new ColorMatrixFilter (color.CalculateFinalFlatArray ()); image.filters = [filtro]; 

Passaggio 19: imposta la classe principale

Faremo uso della Document Class in questo tutorial, se non sai come usarlo o sei un po 'confuso per favore leggi questo QuickTip.


Passaggio 20: test

Sei pronto per testare - premi Cmd + Invio per esportare la tua applicazione e vederla funzionare!


Conclusione

Hai imparato un'eccellente tecnica di manipolazione delle immagini, sperimentale!

Grazie per aver letto questo tutorial, spero che tu l'abbia trovato utile!


Altre risorse colorate su Activetuts+

  • Manipolare gli effetti visivi con ColorMatrixFilter e ConvolutionFilter
  • Confronto dei filtri in Flash
  • Creare un editor di luminosità in ActionScript 3
  • Suggerimento rapido: accelerare i percorsi di movimento in tempo reale
  • Sfrutta la potenza della mappatura delle palette per personalizzare i personaggi dei giochi - Premium attivo