Avatar billede Six Nybegynder
12. juni 2005 - 08:07 Der er 9 kommentarer og
1 løsning

hitTest() giver mig undefined.

function onMouseDown() {
    var enemyArray:Array = [e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46];
    test = _root.enemy1.enemyArray.hitTest(_root._xmouse, _root._ymouse, true);
    trace(test);
}

Hvorfor giver dette mig undefined i mit output panel ?
Avatar billede Six Nybegynder
12. juni 2005 - 08:14 #1
Opdatering:

Dette giver mig altid outputtet true - selvom musen ikke er på en af mine fjender. Hvorfor ?

function onMouseDown() {
    var enemyArray:Array = [e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46];
    if (_root[enemyArray].hitTest(_root._xmouse, _root._ymouse, true) && (_root[enemyArray].visible=true)) {
        trace(true);
    } else {
        trace(false);
    }
}
Avatar billede mat Nybegynder
12. juni 2005 - 11:06 #2
Fordi du bruger det forkert.

hitTest() er en metode på MovieClip, og du prøver at bruge den på et Array.

For det første kan jeg ikke umiddelbart forstå hvorfor du opretter arrayet hver gang musen venstreklikkes? Jeg ville ikke have det stående der. Dernæst går jeg udfra at dit array indeholder referencer til movieclips, og det er dem du vil teste på? Så lav et loop der itererer gennem dit array og tjekker hitTest på hvert movieclip. (eller lav en anden konstruktion f.eks med en onPress på hvert movieclip).

Og når du sammenligner to værdier bruger man to lighedstegn, et enkelt lighedstegn er en tildeling af værdi. (og et Array kan iøvrigt ikke være visible eller ej, visible er en et flag på movieclips, der afgør om de skal renderes eller ej)

mvh mat
Avatar billede Six Nybegynder
12. juni 2005 - 11:56 #3
Det er 1 movieklip, kopieret - så det er instancenavne mit array indeholder.

Jeg har lavet en scene, med en masse fjender på, som består af 1 movieklip kopieret men med forskellige instancenavne. Jeg skjuler de instances der ikke skal være aktive med visible = false;

Jeg skal så teste for om mit sigtekorn rammer den instance der er synlig, og så skal den afspille enemy1's flag der hedder death.

Og jeg er ny i flash - så jeg er ikke så skarp ;D

Kan du hjælpe mig videre ?
Avatar billede mat Nybegynder
12. juni 2005 - 13:11 #4
Jeg tror jeg ville bruge onPress event handleren istedet. Movieclips der ikke renderes (ved _visible = false) fanger ikke denne event. Og du tjekker jo alligevel om man rammer movieclippet med musen?

Prøv at smide det her i roden:

function testMe() {
    trace (this._name);
}
num_buttons = 46;
for (var i = 1; i <= num_buttons; i++) {
    this["e" + i].onPress = testMe;   
}

mvh mat
Avatar billede Six Nybegynder
12. juni 2005 - 13:21 #5
uhh det gav mig jo pludseligt noget at arbejde med, nu kan jeg vel teste for om instance navnt er synligt eller ikke, og er den synlig - så skal den dø, er den ikke skal der ikke ske noget. Det kan jeg vel godt eller hvad?

Takker for dit script
Avatar billede mat Nybegynder
12. juni 2005 - 13:33 #6
Hvis du bruger ovenstående vil de usynlige (_visible = false) slet ikke reagere på det.
Avatar billede Six Nybegynder
13. juni 2005 - 09:23 #7
mat - smid lige svar :D
Avatar billede mat Nybegynder
13. juni 2005 - 18:54 #8
aight :)
Avatar billede Six Nybegynder
13. juni 2005 - 21:07 #9
hey mat. ved du hvordan jeg kan deaktivere et movieclip, så det ikke kan klikkes på, når man har klikket på det en gang ?
Avatar billede Six Nybegynder
13. juni 2005 - 21:10 #10
i så fald, kan du svare her: http://www.eksperten.dk/spm/625727 :)
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