puzzle sa nepravilnim oblicima

puzzle sa nepravilnim oblicima

offline
  • Pridružio: 18 Sep 2007
  • Poruke: 22

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.

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] : []
}
****************************************************************

Reseno:
dizajnzona.com/forums/index.php?showtop.....ntry880148



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
Ko je trenutno na forumu
 

Ukupno su 558 korisnika na forumu :: 8 registrovanih, 2 sakrivenih i 548 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 9k38, Bloody, Djole, Krusarac, Oscar2, tomigun, wizzardone, yrraf