. .. : Swf.hu 1.0 archívum : Swf.hu főoldal >>> : .. .




 
 
SEGÉDLETEK Effektus-trükk

Képek színezése a setTransform függvénnyel
  feltöltve: 2004.06.03 | szerző: chrss | olvasva: 10936 alkalommal

 

Még anno valamikor láttam egy oldalt, amelyen a referenciáknál ha a kép fölé vittem az egérkurzort akkor a kép színösszetétele megváltozott. Ezt fogjuk reprodulkálni az alábbi segédletben.

A legjobb dolog az egészben hogy nagyon egyszerű megoldani, egyetlen függvényt használunk hozzá. Ez a függvény a setTransform amely gyakorlatilag a Moziklip Color advanced fülének felel meg.

A setTransform függvénnyel ezeket a tulajdonságokat tudjuk ActionScript-en keresztül módosítani. Az első sor az RGB és az alfa ( -100%-tól +100%-ig) a második sor ezek eltolása (offset) egy -255-től +255-ig terjedő skálán.
Akkor kezdjünk is bele.
- Hozzunk létre egy új fla-t, a paraméterei: 344x240 pixel, 25 fps.
- Szükségünk van egy képre, importáljuk be és rakjuk ki a stage-re.
- A kép méretei pontosan megegyeznek a moziéval. Alakítsuk át moziklippé és nevezzük el kep-nek.

A teljes mozink 3 darab frame-ből és két layerből fog állni. Az alsó layer-en van a kep moziklippünk a felette lévőn pedig az AS kód.

Első frame:
// Mint minden színekkel kapcsolatos műveleteknél itt is szükségünk lesz egy Color objektumra.
myColor = new Color(kep);
// Létrehozunk egy új objektumot a setTransform függvényhez.
myColorTransform = new Object();

A második frame üres.

A harmadik frame:
mivel az egérkurzortól fog függeni, hogy mi történik a képpel ezért lekérjük a koordinátáit.
eger_y=_root._ymouse
eger_x=_root._xmouse

Az egér koordinátái alapján generálunk egy ---255-től +255-ig terjedő számokat.
Kivonunk a koordinátából 172-t, így -172-őt kapunk a 0 kordinátán és a 344-es koordinátán pedig 172-őt. Ha ezt elosztjuk 172-vel, akkor kapunk egy -1-től 1-ig terjedő számot, ha ezt szorozzuk 255-el, akkor meg is van a számgenerálásunk az egér x koordinátájára.
Az y koordinátára ugyanaz, csak mivel a mozi magassága 240 ezért a számok is változnak.

zold=((eger_x-172)/172)*255
piros=((eger_y-120)/120)*255

//Itt jön a lényeg, de előtte nézzük hogy mi mit jelent.
- ra a vörös szín százalékban kifejezett értéke (-100-tól 100-ig).
- rb a vörös szín eltolása (-255-től 255-ig).
- ga a zöld szín százalékban kifejezett értéke (-100-tól 100-ig).
- gb a zöld szín eltolása (-255-től 255-ig)
- ba a kék szín százalékban kifejezett értéke (-100-tól 100-ig).
- bb a kék szín eltolása (-255-től 255-ig)
- aa az átlátszóság százalékban kifejezett értéke (-100-tól 100-ig).
- ab az átlátszóság szín eltolása (-255-től 255-ig)

A piros szín eltolásának beállítjuk a piros változót, a zöld színhez pedig a zold változót. Ahogy mozgatjuk az egeret, változik a kép színösszetétele.

myColorTransform = { ra: '100', rb: piros, ga: '100', gb: zold, ba: '100', bb: '0', aa: '100', ab: '0'}
//hozzárendeljük a szín objektumhoz a változást.
myColor.setTransform(myColorTransform);
// visszalépünk az előző frame-re.
gotoAndPlay(_currentframe-1)

Ha a százalékértéket akarjuk változtatni, nem az eltolást, akkor a megfelelő képlet:
zold=(eger_x/344)*100
piros=(eger_y/240)*100

Ide nem kell a 100% mert 0% alatt már nem látszik eltérés.
A variációk végtelenek, a színezéssel kapcsolatban érdemes kipróbálni ha más értékeket változtatunk a MyColorTransform-ban. Szép effekteket lehet elérni egyszerre több érték változtatásával.

 
 
 

© Devnet.hu. A segédletek semmilyen formában nem másolhatók, publikálhatók a Devnet.hu és a szerzők közös írásos engedélye nélkül.
 
. .. : Swf.hu 1.0 archívum : Swf.hu főoldal >>> : .. .