[ Ken_Parker @ 16.02.2010. 10:35 ] @
AS3 Pravim slagalicu, drag-drop. Uvezao sam originalnu sliku i njene parcice. Delovi su 32-bitni, sa alpha maskom. Drop oblasti definisao sam u Flash-u. Problem se javlja kada parcici, delovi slagalice nisu pravougaonici, vec nepravilni oblici, trouglovi...: 1. Klik na deo bice registrovan u celom pravougaoniku, tamo gde slika stvarno i ne postoji, a ne samo u delu gde postoje vidljivi pixeli. Recimo, deo je trougao, ali ce klik biti registrovan na celoj povrsini prvougaonika koji cini _mc. Ovaj problem sam resio (rollOver, pa BitmapData, pa getPixel != 0, itd... !?!?!?) 2. Drop zona je opet cela povrsina pravougaonika koji sadrzi zonu. (opet primer trougao i pravougaonik). Koristio sam hitTestObject. Kada koristim dropTarget opet nema resenja, jer bitan je polozaj misa. Imam neke ideje sa pravljenjem preseka Rectangle-a, pa analiza sadrzaja u oba _mc,..., ali mi to deluje prekomplikovano. Cini mi se da je sve moguce resiti elegantnije, ali ne znam kako. Najbolji prijatelj, Google, mi nije dao odgovor - svuda su delici slagalice gotovo potpuni prvougaonici. Kako da resim problem? Dopuna... hitTestObject ce odreagovati na celoj povrsini _mc koja ja nepravilan oblilk - pravougaoniku, a ne SAMO iznad nepravilnog oblika. To znaci da kada je nepravilni oblik (trougao) van kopije (vizuelno, za posmatraca), tj. nema preklapanja nepravilnog oblika i njegove kopije, kopija ce dobiti glow, sto nije logicno. Evo jednostavnog primera. Trougao je uvezen kao png, sa alpha maskom, a cilj nacrtan u Flashu. http://www.webng.com/sveisvasta/ Kod: ************************************************************ var filterGlow:GlowFilter = new GlowFilter() vuceni.addEventListener(MouseEvent.MOUSE_DOWN, dole) vuceni.addEventListener(MouseEvent.MOUSE_UP, gore) function dole(event:MouseEvent) { vuceni.startDrag(false) vuceni.addEventListener(Event.ENTER_FRAME, frejm) } function gore(event:MouseEvent) { vuceni.removeEventListener(Event.ENTER_FRAME, frejm) stopDrag() } function frejm(event:Event) { cilj.filters = (vuceni.hitTestObject(cilj)) ? [filterGlow] : [] } **************************************************************** [Ovu poruku je menjao Ken_Parker dana 17.02.2010. u 13:47 GMT+1] Reseno: http://www.dizajnzona.com/foru...;gopid=880148&#entry880148 [Ovu poruku je menjao Ken_Parker dana 17.02.2010. u 18:35 GMT+1] |