This is a discussion on Immagine in negativo con Actionscript 3.0 within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Vi serve applicare un effetto digitale negativo ad una o più immagini ?
Questo articolo dimostra come farlo utilizzando una matrice ...
Vi serve applicare un effetto digitale negativo ad una o più immagini ?
Questo articolo dimostra come farlo utilizzando una matrice digitale negativa che viene poi applicata all' immagine con la classe ColorMatrixFilter.
Applicandoci poi un intervallo, ci si potrebbe giocarci sopra un po...
In questo esempio applico 3 slider in modo da controllare i canali red, green, blue della matrice negativa.
Vediamo l' esempio...
Creo un FLA che salvo con nome ' negativo.fla ' al cui interno,
creo 2 istanze MovieClip che chiamo ' img_mc ' e ' pic_mc ' al cui interno inserisco un' immagine.
Creo tre istanze del componente Slider a cui assegno i rispettivi nomi istanza: ' red_slider ', ' green_slider ', ' blue_slider '.
Creo la Document Class, un file AS che salvo con nome ' Negativo.as ', implementata in questo modo:
Code:
package
{
import flash.display.MovieClip;
import flash.filters.ColorMatrixFilter;
import flash.events.Event;
public class Negativo extends MovieClip
{
public function Negativo()
{
init();
listener();
}
private function init():void
{
stage.frameRate=31;
pic_mc.filters=[new ColorMatrixFilter(
[-1,0,0,0,255,
0,-1,0,0,255,
0,0,-1,0,255,
0,0,0,1,0])];
red_slider.minimum=0;
red_slider.maximum=255;
red_slider.value=255;
green_slider.minimum=0;
green_slider.maximum=255;
green_slider.value=255;
blue_slider.minimum=0;
blue_slider.maximum=255;
blue_slider.value=255;
}
private function listener():void
{
pic_mc.addEventListener(Event.ENTER_FRAME,go);
function go(e:Event):void
{
e.target.filters=[new ColorMatrixFilter(
[-1,0,0,0,red_slider.value,
0,-1,0,0,green_slider.value,
0,0,-1,0,blue_slider.value,
0,0,0,1,0])];
}
}
}
}
Risultato:
Analizziamo il codice.
Metodi:
init();
imposto la velocità del framerate
stage.frameRate=31;
applico la matrice negativa a pic_mc utilizzandouna nuova istanza della classe ColorMatrixFilter e assegnandola alla proprietà filters della MovieClip (appunto pic_mc )
pic_mc.filters=[new ColorMatrixFilter(
[-1,0,0,0,255,
0,-1,0,0,255,
0,0,-1,0,255,
0,0,0,1,0])];
per ogni slider assegno un valore minimo ed uno massimo ( minimo zero, massimo 255...gli stessi valori massimi della scala RGB ) e gli assegno un valore di partenza
red_slider.minimum=0;
red_slider.maximum=255;
red_slider.value=255;
green_slider.minimum=0;
green_slider.maximum=255;
green_slider.value=255;
blue_slider.minimum=0;
blue_slider.maximum=255;
blue_slider.value=255;
listener();
aggiungo un intervallo ENTER_FRAME
pic_mc.addEventListener(Event.ENTER_FRAME,go);
function go(e:Event):void
applico la matrice negativa in base ai valori ottenuti dalla posizione delle tre sliders
e.target.filters=[new ColorMatrixFilter(
[-1,0,0,0,red_slider.value,
0,-1,0,0,green_slider.value,
0,0,-1,0,blue_slider.value,
0,0,0,1,0])];