ColorMatrixFilter

Zelite promijeniti (color saturation) RGBA (Red, Green, Blue, Alpha) vrijednosti slike ili nekog drugog objekta? Flash posjeduje klase za jednostavno mijenjanje ovih parametara. Potrebno je samo par linija koda… Ovdje cu ja malo iskomplicirati kod, zato jer koristim 4 slidera s kojima cu mijenjati vrijenosti RGBA. Inace nema puno mudrolije. Testirajte na mom primjeru:




Download Ovdje mozete skinuti source

Krenuti cemo sa importiranjem slike na scenu i konvertiranju u Movie clip (tipka F8). Imenujte vas clip - Instance name u Properties prozoru kao slika. Takoder cu na scenu postaviti 4 slidera (svaki za svoju boju, odnosno alpha kanal). Ovaj dio vjerojatno vam nece niti trebati, vec sam ga ja ubacio zbog boljeg objasnjenja klase ColorMatrixFilter. Objasnjenje slidera imate u tutorijalu MP3 player (1). Svakom od ova 4 slidera cu dodijeliti instance name: crveni_s, zeleni_s, plavi_s, alfa_s.

ActionScript - ColorMatrixFilter
Zatim krecem na ActionScript. Napravite novi layer na koji cemo upisivati kod. Krenuti cu sa importiranjem potrebnih klasa za ovaj primjer.

import flash.filters.BitmapFilter;
import flash.filters.ColorMatrixFilter;

BitmapFilter - osnovna klasa za sve manipulacije sa filterima
ColorMatrixFilter - klasa sa kojom cemo mijenjati RGBA

Nakon toga cu reci Flashu da shvati nasu sliku kao Bitmapu. Ovo ce povecati performanse kad se radi o vecim vektorima. To ovdje nije primjer, ali Vam samo pokazujem kako se to radi.

slika.cacheAsBitmap = true;

Postaviti cu pocetne vrijednosti RGBA na 100% tj.

var crvena=zelena=plava=alfa=1;

Tada definiram funkciju koju cu pozivati kada budem mijenjao vrijednosti RGBA pomocu slidera. Ta funkcija ce preuzimati4 varijable, a to su vaijable za tri boje i jedna za alfa kanal.

function primjeni_filter(crvena, zelena, plava, alfa) {

ColorMatrixFilter je ustvari matrica dimenzija 4×5. Zato cu napraviti vlastitu matricu tj. polje koje cu puniti sa svojim vrijednostima crvene, zelene, plave boje i alpha kanala.

var matrix:Array = new Array();
matrix = matrix.concat([crvena, 0, 0, 0, 0]);
matrix = matrix.concat([0, zelena, 0, 0, 0]);
matrix = matrix.concat([0, 0, plava, 0, 0]);
matrix = matrix.concat([0, 0, 0, alfa, 0]);

Zatim stvaram svoj ColorMatrixFilter kojeg nazivam filter i kojem pridruzujem vrijednost ranije stvorene matrice

var filter:BitmapFilter = new ColorMatrixFilter(matrix);

Slijedi primjena filtera na sliku:

slika.filters = new Array(filter);

Nastavak na sljedecoj strani…


Pages: 1 2

Komentari

Verification Image

Unesite slova sa slike.