4.5. A színválasztó eszköz
//
colorPicker színválasztás
picker_mc.useHandCursor = false; //(*41)
picker_mc.onRelease = function() {
// új BitmapData-t hozunk létre és ebbe 'bemásoljuk' a
picker_mc-t (*42)
pickerBitmap = new
flash.display.BitmapData(80, 45, false, 0xFFFFFFFF);
pickerBitmap.draw(this);
// a getPixel segítségével a klikkeléskor érvényes
egérpozíciónak megfelelő
// helyen levő pixel
színértékeit tudjuk leolvasni (*43)
hexCode = pickerBitmap.getPixel(this._xmouse,
this._ymouse).toString(16);
while (hexCode.length<6) {
hexCode = "0"+hexCode;
}
_global.penColor = "0x"+hexCode;
pickerBitmap.dispose();
};
*41 - az adott pixel lekérdezéséhez a picker_mc-t, mint gombot fogjuk
használni, ám a falhasználói félreértések (és mert a kurzornyíl hegye pontosabb
kiválasztást biztosíthat, mint a kéz-ikon mutatóujja), letiltjuk a kéz-ikon
használatot.
*42 - ahhoz, hogy egy létező kép egy pixeljének színértékeit le tudjuk olvasni,
szükségünk lesz a BitmapData osztály bizonyos metódusaira. az új Bitmapdata
példány megadásakor annak méretét a picker_mc méretével azonosan veszzük fel,
jelen esetben átlétszóságra nincs szükségünk, a háttér szine pedig lényegében
indiferens, mivel a draw() metódussal a picker_mc képi megjelenését torzítatlan
formában tudjuk a csak virtuálisan létező BitmapData példányunkba illeszteni.
*43 - a getpixel() segítségével az épp aktuális _xmouse, _ymouse koordinátákon lévő pixel RGB adatait
olvashatjuk le, Ahhoz, hogy ezt az értékez hexadecimális formában (RRGGBB)
kapjuk meg, a toString(16) metódussal kell
átkonvertánunk. Az így kapott hexCode
változóval kapcsolatban még egy apró trükkre is szükségünk lesz, hogy ha a
konverzió nem hat karakteres értéket ad vissza (mert a kezdő érték(ek) 0
értékűek), akkor ezeket egy while ciklusban pótoljuk. Ettől kezdve a globális penColor változónk ezt
az új értéket tartalmazza, értelemszerűen a szükséges "0x" előtaggal.
Flash memória használati szempontból a már nem hazsnált virtuális
BitmapDatánkat érdemes 'kiüríteni', ezt a dispose()
metódussal tehetjük meg.