Avatar billede larz_larzen Nybegynder
16. juli 2001 - 11:40 Der er 14 kommentarer og
1 løsning

Underlige hitTest


Hej.

Jeg er blevet inspireret til at lege lidt med hitTest funktionen i Flash 5.

Men jeg gør åbenbart et eller andet galt.

Tilsyneladende kan jeg kun få funktionen til at virke i \"_root\".

Det her smækker jeg ind på i en movieclip:

onClipEvent (enterFrame) {
    if (this.hitTest(_root.point._x, _root.point._y, true)) {
        setProperty (\"_root.point\", _visible, \"0\");
    }
}

- og når mc\'et \"point\" rammer mc\'et med onClipevent\'en så bliver \"point\"s visibility rigtig nok sat til 0. Helt fint...

Men hvis jeg nu lægger de 2 mc ind i et nyt mc, kaldet \"lvl\", sker der intet!!!:

onClipEvent (enterFrame) {
    if (this.hitTest(_root.lvl.point._x, _root.lvl.point._y, true)) {
        setProperty (\"_root.lvl.point\", _visible, \"0\");
    }
}

Jeg har virkelig fedtet frem og tilbage, og forstår ikke hvorfor det bliver ignoreret?!?

Hilsener, Larz_Larzen.

Avatar billede hoejrup Nybegynder
16. juli 2001 - 12:46 #1
Har du husket at give dit MC instance navnet lvl?

/per
Avatar billede larz_larzen Nybegynder
16. juli 2001 - 12:51 #2
>Per
Ja, det har jeg...
Jeg har genskabt \"problemet\" igen og igen...
Det virker som at hitTesten bliver ignoreret, når man refererer længere nede i \"Hierakiet\"...
_root.point, er ok, men _root.lvl.point, går ikke...

Det her er meget frustrende!

Avatar billede lingoman Nybegynder
16. juli 2001 - 12:54 #3
Hej Larz_Larzen,

Når man anvender hitTest(x,y,shapeFlag) syntaksen er x,y altid main stage koordinater.

Hvis du blot vil teste de 2 MC\'er med hitTest kan du bruge den anden syntaks:

onClipEvent (enterFrame) {
    if (this.hitTest(\"point\") {
          setProperty (\"_root.point\", _visible, \"0\");
    }
}

Har man behov for at bruge en MC\'s interne koordianter i et hitTest skal man først konvertere det via

MC.localToGlobal()

mvh Geo
Avatar billede larz_larzen Nybegynder
16. juli 2001 - 13:04 #4

Lingoman
Jeg vil gerne bruge hitTest(x,y,shapeFlag)

Hvordan skal det der MC.localToGlobal() bruges i min kode? (newbie, sorry)


Avatar billede lingoman Nybegynder
16. juli 2001 - 13:29 #5
Hvis vi siger at vi gerne vil følge et bestemt punkt i din MC \"point\", fks . (x,y) = (5,17) relativ til MC \"point\"\'s registreringspunkt, definerer du det som et objekt via

knivSpids = new Object();
knivSpids.x = 5;
knivSpids.y = 17

Nu kan vi hurtigt hvor MC \"point\" knivSpids befinder sig i forhold til main stage ved at bruge

point.localToGlobal(knivSpids); //konverter Mc koordinater til Stage

stageKnivX = knivSpids.x;  // her er KnivSpidsen nu i main stage koordinater
stageKnivY = knivSpids.y

Endelig kan vi teste for hitTest(x,y,ShapeFlag)

onClipEvent (enterFrame) {
    if (this.hitTest(knivSpids.x,knivSpids.y,true) {
            setProperty (\"_root.point\", _visible, \"0\");
    }
}

Jeg håber at det kan hjælpe!

mvh Geo
Avatar billede larz_larzen Nybegynder
16. juli 2001 - 13:42 #6

Det her er åbenbart ikke rigtigt, for det virker ikke....Det hele er lidt for relativt for mig :)

onClipEvent (enterFrame) {
    punkt = new Object();
    punkt.x = 5;
    punkt.y = 5;
    point.localToGlobal( punkt );
    if (this.hitTest(punkt.x, punkt.y, true)) {
        setProperty (\"_root.lvl.point\", _visible, \"0\");
    }
}

i: point.localToGlobal( punkt );, skal \"point.\" så relateres igennem hierakiet, som: _root.lvl.point.localToGlobal( punkt );?

Hvad med selve mc\'et som indeholder Event\'en, hvad med dens variabler, skal de ikke også \"konverteres\"?

Jeg er åbenbart tabt bag en vogn  :(


Avatar billede larz_larzen Nybegynder
16. juli 2001 - 14:25 #7
>lingoman

Jeg højner point\'sne til 300 for en .fla :)

Ikke at du sikkert gider, men jeg er helt på spanden her...
Så jeg satser:
larz_larzen2000@yahoo.com
Avatar billede lingoman Nybegynder
16. juli 2001 - 14:46 #8
Super,  men jeg arbejder nu og får først tid kl. 17.

mvh Geo
Avatar billede larz_larzen Nybegynder
16. juli 2001 - 14:49 #9
Geo>

lækkert....
Husk nu at det drejer som om 2 mc\'s inde i et mc...
Ikke for at fornærme din intelligens :)

Jeg ser frem til .fla\'en
Avatar billede lingoman Nybegynder
16. juli 2001 - 16:50 #10
Send lige din fla til mig, så vil jeg redigere den  mvh geo
Avatar billede lingoman Nybegynder
16. juli 2001 - 16:51 #11
ups!  geo@lingoman.dk
Avatar billede larz_larzen Nybegynder
16. juli 2001 - 17:21 #12
>Geo.

Har sendt .fla\'en

Larz
Avatar billede larz_larzen Nybegynder
16. juli 2001 - 17:38 #13
>Geo

Nå, du kan lige så godt få dine points nu...
Jeg går stærkt ud fra du løser mit problem...

Tak, fordi du gad at redigere min .fla.

Avatar billede lingoman Nybegynder
16. juli 2001 - 22:26 #14
onClipEvent (enterFrame) {
    setProperty (this, _x, this._x+1);
    punkt = new Object();
    punkt.x = 0;
    punkt.y = 0;
    this.localToGlobal(punkt);
   
    if (_root.lvl.amoeba.hitTest(punkt.x, punkt.y, true)) {
        this._visible = false;
    }
}

Dette er nok til at chekke for om punkt (0,0) i denne MC er inden i MC \"amoeba\"

bemærk at localToGlobal konverterer et MC relativ punkt til mainStage koordinater for hitTest(x,y,ShapeFlag) udføres.

Jeg har sendt dig din redigeret fla fil så du kan se hvordan det kan bruges.

mvh Geo

PS. tak for de ekstra points!








Avatar billede lingoman Nybegynder
18. juli 2001 - 19:21 #15
Hej Lars,

Jeg håber at fla filen jeg sendte igår har afklaret brugen af de omtalte localToGlobal og hitTest(x, y, ShapeFlag).

mvh Geo
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