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.

[Link mogu videti samo ulogovani korisnici]


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:
[Link mogu videti samo ulogovani korisnici]



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

Ukupno su 716 korisnika na forumu :: 61 registrovanih, 4 sakrivenih i 651 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: ALEKSICMILE, Asteker, Bivan, bojansmudja, Borkanović, BORUTUS, Boskovic, BrcakRS, celik, cifra, Coabelgrade, Coficab, Devil city 1989, Dokon Pop, Dusko Nikolin, ElGenius, feanor, gaga23, Georgius, Giskard, Gosha101980, Goxy69, howyesno, istina, K2, kasikaz, komenski, kybonacci, luka35, mane123, mercedesamg, MIKI63, miljannis, narandzasti, NklJov123, oganj123, pacika, Parker, Petar888, pfc74, Prle90, procesor, rakivan, Resnica, ruso, Sićko, Solunac na steroidima, Srb1346, srecko81, Srki_82, stegonosa, Stoorb, tomigun, tomo2, vaso1, Vrač, Wrangler, YugoSlav, ZetaMan, zgoljo, zlaya011