18. december 2001 - 12:29Der 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)
I et stadigt mere komplekst trussel landskab, hvor sofistikerede cyberangreb, ransomware og datalækager udgør en konstant risiko, er IT-sikkerhed for længst rykket direkte ind i bestyrelseslokalet.
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
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.
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? (:
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?
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
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.
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!
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...
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 ?
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.
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...
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.
Synes godt om
Ny brugerNybegynder
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.