06. juni 2006 - 08:39Der er
11 kommentarer og 1 løsning
Mærkeligt problem med hitTest
Hej Eksperter!
Jeg har et hitområde der ligner en banan der ligger ned, som en sur mund :)
Jeg skal teste om mine klip stadig befinder sig inden for dette område efter der er skiftet størrelse på dem. Størrelsesforøgelse sker ved at vælge en højere værdi i en combobox, og samtidigt bliver hitområdet skaleret på y-aksen. HitTesten virker på den øverste kant af den sure mund, men ikke på den nederste! - her virker det først når jeg igen vælger en værdi i comboboxen. En eventlistener aktiverer her de forskelige funktioner, bl.a. den som skal tjekke for overlap:
Det er som om oplysninger om hitområdets nye facon ikke når "helt frem", men så skulle det jo heller ikke virke på overkanten.... så jeg forstår bare ingenting. Kan nogen hjælpe?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Nu har du husket at tage højde for, at din funktion kun returnerer true, når centrum af _root['mc' + aktiv] berører, ikke? Ellers kunne dette nemt være årsag til denne mærkelige fremkommen!
Jo netop - det er derfor jeg er nødt til at skalere mit hitområde for at få en ny og snævrere grænse for det forstørrede klip. Den nederste grænse vil herefter være hoppet om på den anden side af xy (midten) af mit klip. Og det virker jo på den øverste grænse... Det er ligesom om at dét at grænsen bevæger sig "baglæns" henover xy punktet på klippet ikke kan registreres... aijj, jeg ved s.. ikke hvad det er der er galt - jeg er fuldstændig blank... men områdets nye grænse bliver rigtigt nok læst ved 2. aktivering af comboen. Til gengæld bliver klippet smidt tilbage uanset om jeg forstørrer eller formindsker det, hvilket også er forkert. Men stadigvæk er det altså kun på den nederste grænse at disse problemer opstår.
Upload det - så kan folk, der ikke gider spørge dig om manglende ting også hjælpe dig. Det er fjollet at begrænse sig til kun at få hjælp fra dem, der viol bruge tid på at spørge om at få dit indhold.
Man skal måske gøre sig fortjent til at hjælpe dig? ;)
Naahh, det er såmænd ikke fordi jeg er kostbar, men kan bare ikke udlevere firmaets kode til gud og hver mand. Det kan du sikkert godt forstå, men tak alligevel for din ulejlighed.
Man bør altid forsøge at isolere sin problemstilling. Lav en lille fil med dummy-indhold, som indeholder kun lige hvad der skal til at genskabe dit problem og link til dette. Det bliver både du (da du får fjernet alle andre fejlkilder) og folk der hjælper (da de kun kigger på det nødvendige) glade for :)
Det havde jeg faktisk også gjort, men opdagede at det var umuligt at fjerne alt det "følsomme", så det er ikke så let lige i dette tilfælde... Det er ikke altid lige fedt at være ansat som den eneste når der så ikke er nogen at "sparre" med. Men på positiv-siden kan man jo sige at man vokser med modstand :)
Sidder nu og brokler med en mulig løsning, så jeg aner et lille bitte lys for enden af tunnelen :)
Tror jeg fandt på noget der kan bruges, men fik så et nyt problem. Håber nedenstående koder er nok til at udløse lidt eksperthjælp :)
Her er det som duer. En funktion, som efter en forøgelse af størrelsen på et placeret klip, skal teste om det nu er for stort og derfor overlapper hitområdet:
function ikkePlads() { if ((_root.canvas.bckground.hitTest(_root.valg["mc"+aktiv]._x+xDia, _root.valg["mc"+aktiv]._y+yDia, true))||(_root.canvas.bckground.hitTest(_root.valg["mc"+aktiv]._x-xDia, _root.valg["mc"+aktiv]._y-yDia, true))) { trace("Sandt! baggrund rammer klip"); }
xDia og yDia bliver lagt til/trukket fra for at bruge kanten på klippet istedet for xy. Det virker faktisk, men når jeg også gerne vil teste for om samme klip under trækning rammer kanten på hitområdet med sin egen kant, så virker det ikke ved at sætte flg. kode på klippets knap:
Det er godt nok ikke kønt. Jeg vil ikke bruge en masse tid på at sætte mig ind i det og foreslå hacks, hvis det kan komme til at virke, for jeg synes ikke det virker som en pæn løsning. Strukturer din kode meget bedre, brug en objekt-orienteret tankegang, hvor funktionalitet er centraliseret. Skal du bruge samme test to steder, så kopierer du altså ikke scriptet to steder hen - man laver en funktion til det :)
Sort snak for mig... jeg mener ikke at det er den samme test der skal udføres. Men nu er alt overflødig kode jo skrællet af, og måske lidt for meget så...
Det kunne være virkeligt fedt at få fortalt hvad der ikke er kønt, men okay, jeg skal ikke spilde mere af din tid. Tak for din interesse i det mindste. Måske er der andre (knap så ekpertagtige) på Eksperten, som synes de har overskud til at hjælpe en mindrebemidlet? Troede egentligt, at det bl.a. var derfor at stedet fandtes, og ikke for at give mulighed for exelering i hovmod. Jeg lægger gerne, i sagens tjeneste, ryg til en vis portion af samme, men der er nu grænser. Da jeg ikke lige føler, at det er realistisk at lære objektorienteret programmering rigtigt fra bunden inden jeg får løst dette problem, så må jeg tumle videre på egen hånd i mine uskønne koder. Til gengæld skal du have rigtig mange tak for de tidligere gange du virkelig har hjulpet til :) Al respekt for dine færdigheder ud i AS.
Problemet er løst - nu virker både min dragfunktion og min test for pladsproblemer ved størrelsesforøgelse - lukker...
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.