Avatar billede purup Nybegynder
18. december 2001 - 12:29 Der er 25 kommentarer og
1 løsning

colletion check

Jeg har et antal movieclips med forskellige former siddende på et farvet område. Nu trækker (startdrag) endnu et movieclip ind i dette farvede område og slipper det (stopdrag). Nu vil jeg gerne checke om movieclippet ligger oven på nogle af de movieclip der lå der i forvejen.
Da movieclippene har underlige former er jeg ikke interesseret i at vide om deres \"kant-box\" rører hinanden, men kun om de rent grafisk rører hinanden. (man skal f.eks. kunne ligge et movieclip inden i et dougnut-movieclip)
Avatar billede lingoman Nybegynder
18. december 2001 - 12:36 #1
Man skal bruge mc.hitTest(x,y, shapeFlag);  med shapeFlag = true
Avatar billede lingoman Nybegynder
18. december 2001 - 12:46 #2
med shapeflag = true eller 1 vil den kun resultere i et hit hvis punkt x,y er indenfor det synlige område af mc\'en og ignorere den firkantede bounding box
Avatar billede purup Nybegynder
18. december 2001 - 12:49 #3
men det er jo kun et enkelt punkt på det pågældende movieclip. Hvordan bruger jeg hittest mellem to movieclip
Avatar billede lingoman Nybegynder
18. december 2001 - 12:52 #4
Man kan lave test mellem lige så mange punkter som man ønsker. Jeg prøver lige at finde frem til et identisk spørgsmål hvor jeg har besvaret det meget grundigt.
Avatar billede lingoman Nybegynder
18. december 2001 - 13:00 #5
Hej,

Der er 3 tidligere spørgsmål hvor netop dit spørgsmål besvares.

HitTest Problemer!  http://www.eksperten.dk/spm/88860
underlige hit test    http://www.eksperten.dk/spm/89517
hitTest http://www.eksperten.dk/spm/94231

Ikke fordi jeg ikke vil hjælpe dig men det ville spare mig for en masse tid hvis du lige læser mine indlæg i disse spørgsmål :)

Hvis du så stadig har nogle tvivl står jeg til rådighed, så sig til når du er klar!

mvh geo

Avatar billede purup Nybegynder
18. december 2001 - 13:01 #6
foreløbelig tak - jeg kigger
Avatar billede purup Nybegynder
18. december 2001 - 13:42 #7
Nu har jeg læst alle tre spørgsmål + svar. Som jeg forstår det, er den forreslåede løsning:

det mc jeg trækker ind over bunken af mc\'s - når jeg slipper det, skal jeg hitteste en række punkter på det.

Da nogle af mc\'erne er komplekse former (ex. slange-form) kommer jeg jo til at skulle teste tonsvis af punkter (og stadig ikke en gang være 100% sikker at mc\'erne ikke overlapper) - er der ikke en nemmere og mere sikker måde? (:
Avatar billede purup Nybegynder
18. december 2001 - 13:55 #8
et tænkt eksempel:

et mc ser ud på følgende måde:
tyndt, aflangt rektangel med længden 10, vilkårligt roteret

et andet mc:
en dougnut hvor det indre hul har en diameter på 9

nu flytter jeg dougnut\'en hen over rektanglet og slipper den. da rektanglet er længere en den indre diameter på dougnut\'en skulle jeg altid få kollision. Men da rektanglet kan pege i alle retninger bliver jeg nødt til at checke forfærtelig mange punkter.

Hvis der er altid var tale om cirkler kunne jeg nok programmere mig ud af problemet og benytte hittest, men hvad hvis der er tale om store ikke-geometriske former?
Avatar billede lingoman Nybegynder
18. december 2001 - 14:04 #9
lad mig lige tænke over det og vende tilbage..
Avatar billede purup Nybegynder
18. december 2001 - 14:10 #10
ok
(du kan godt se hvad jeg ikke?)
Avatar billede lingoman Nybegynder
18. december 2001 - 14:13 #11
jo da, du ønsker en mere alsidig metode hvormed man kan teste om 2 vilkårlige MC\'er overlapper i deres synlige områder, ikke ?
Avatar billede purup Nybegynder
18. december 2001 - 14:14 #12
lige præcis!
Avatar billede lingoman Nybegynder
18. december 2001 - 14:17 #13
Det er sikkert noget jeg selv får brug for en skønne dag, så det vil jeg gerne prøve at lave til dig. Det bliver nok ikke idag men først på torsdag. Kan du vente så længe ? ellers må en anden overtage herfra
Avatar billede purup Nybegynder
18. december 2001 - 14:22 #14
Det er bare super fornemt. Og nej, selvfølgelig kan jeg ikke vente (sådan er programmører når de får en ide i hovedet) men det bliver jeg jo bare nødt til.
Så vil jeg med spænding afvente dit løsningsforslag. På forhånd tak.
Avatar billede cgleerup Nybegynder
19. december 2001 - 12:04 #15
Hvad med at omgå problemet ved at lave dummy movieclip, der ligger placeret i de movieclips som ønsker at lave hittest på, så kan du jo lade hittesten afgøres af dette movieclip, således:

du kører hittest på dit oprindelige movieclip, men denne hittest er kun sand hvis hittesten på det nye \"dummy\" movieclip er falsk.

Det er naturligvis en lidt underlig løsning men hvis der ikke er noget af det lingoman beskriver der løser dit problemer, så må man jo prøvet noget andet!
Avatar billede barklund Nybegynder
19. december 2001 - 12:57 #16
Jeg tror, at cgleerup har fat i den rigtige ende...

Jeg har før kæmpet hårde kampe med dette, men har haft succes med, at på mit mc, der for eksempel forestiller en mand, lavet inde i mc\'et 10 dummy-hit-mc\'er, og så ude i roden lavet hittest mellem det, som manden kan stå ovenpå og så punkterne \"inde i\" manden, altså:

for (var i = 0; i < _root.mand.hits; i++) {
    var pos = new Object();
    pos.x = _root.mand[\"hit\" add i].x;
    pos.y = _root.mand[\"hit\" add i].y;
    mand.localToGlobal(pos);
    if (_root.target.hitTest(pos.x, pos.y, 1) {
        blabla...
    }
}

men kan man som cgleerup foreslår lavet noget med, at man i sit target-mc placerer et firkantet mc, der ligger der, hvor hullet er (tilnærmet set), kan man sandsynligvis neddsætte antallet af hitTests nødvendige for at præcisere. Man kan også helt groft set beskrive de to mc\'er præcist ved deres vektorielle fremstilling og placering, og så matematisk beregne, om de kolliderer...

hitTest i sin nuværende form er virkelig irriterende, da den bruger boundingbox på begge eller punkt på det ene. Lad os satse på bedre understøttelse i 6\'eren...
Avatar billede cgleerup Nybegynder
19. december 2001 - 12:59 #17
;0)
Avatar billede lingoman Nybegynder
29. december 2001 - 21:40 #18
Her er lidt læsestof til dem der har tænkt sig at finde en løsning til dette spørgsmål
http://www.gamasutra.com/features/20000330/bobic_pfv.htm
Avatar billede lingoman Nybegynder
03. januar 2002 - 00:30 #19
purup>> Er det nok hvis hit=true indenfor et begrænset område på dine mc\'er lidt a la snap-to-pos actioner man ser med puslebrikker når de er tæt nok på en \'match\' med en anden brik ?
Avatar billede purup Nybegynder
04. januar 2002 - 16:36 #20
Det er desværre ikke nok.
Det skal faktisk være ligesom et rigtigt shapeshit. Hvert eneste punkt behøves ikke at blive checkket, men hvis det skal virke ordentligt skal derf testes en del punkter.
Avatar billede lingoman Nybegynder
04. januar 2002 - 16:39 #21
OK.. det er virkelig noget shape-shit ;)
Avatar billede barklund Nybegynder
20. januar 2002 - 12:51 #22
Husk at lukke...
Avatar billede purup Nybegynder
21. januar 2002 - 13:29 #23
Hvordan lukker man?
Er man nødt til at afvise alle svar? Det er jo ikke fordi de er forkerte, de er bare ikke gode nok.
Avatar billede barklund Nybegynder
21. januar 2002 - 15:41 #24
Man er nødt til at acceptere et eller andet svar - så er der lukket... Hvis du ikke mener, at nogen af svarene fortjener point, så lav dit eget svar og accepter kun det... Ellers tryk på \"avanceret\" og tildel de forskellige svar (evt. inklusive dit) et passende antal point...
Avatar billede hoejrup Nybegynder
21. februar 2002 - 21:35 #25
Har du lyst til at lukke dette spørgsmål?

/per
Avatar billede purup Nybegynder
25. februar 2002 - 11:11 #26
Tak for hjælpen alle sammen.
Jeg ved at det er god skik og brug her på eksperten at lukke sine spørgsmål efter sig. Det troede jeg faktisk at jeg havde gjort, beklager. Håber i vil hjælpe en anden gang.

Desværre syntes jeg ikke der er kommet nogen løsning på mit problem. Jeg søgte efter en ægte shapeshit funktion.
Derfor gør jeg som barklund siger, giver mig selv 0 point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester