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 1074 korisnika na forumu :: 95 registrovanih, 8 sakrivenih i 971 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: airsuba, amaterSRB, Apok, Arhiv, armor, Asparagus, bbrasnjo3, Belac91, bobomicek, bojankrstc, Bojke549, Boris90, bpvl, brkan1, Bubimir, Cigi, crnogorac, cvrle312, d.arsenal321, Dambi, darkangel, darkkran, Darko8, dejanbenkovic, dekan.m, Dimitrije Paunovic, djukapfc, Electron, EVIDENTICAR, g_g, GAGI, havoc995, Hemi, HogarStrashni, hooraay, ivan979, jodzula, Jomini, Kriglord, Kruger, lucko1, luka35, M74AB3, madza, maksi007, Manjane, mean_machine, mercedesamg, MiGac, mikidragi, milos.cbr, Misirac, Mitogna, mkukoleca, monomah, MrNo, Mskok, nebidrag, nebojsag, nenad81, neutrino, nikolapetkovic, Njubara, opt1, Pilence, pirke96, Povratak1912, Primus17, RajkoB, rakivan, RD84, Rebel Frank, rikirubio, Ripanjac, rovac, sap, Sarmat, sevenino, sixpac, smes_no, Snorks, SOVO515, Srki94, Srki98, StepskiVuk, Str2022, Strasni JA, TBoy, tuja, Username1000, vensla, Vojin, Vzor50, Zadonbas, zdrebac