Avatar billede bootlab Nybegynder
28. oktober 2002 - 17:54 Der er 29 kommentarer og
1 løsning

Joker My object

Hey!

Jeg vil gerne ha' hjælp med noget ActionScript!!

Jeg har lavet følgende:

    if (_root.Object1.hitTest(this)==true) {
        removeMovieClip(this);
        removeMovieClip(_root.Object1);
    }

og det virker fint!

Men jeg vil avancere det sådan at jeg kan lave duplicate movieclip og give dem et instance name
der feks. hedder Object og så et tal bagefter (Object1), (Object2) osv. osv...

Jeg kan sagtens lave en duplicate MovieClip, meeen der
hvor mit problem så opstår, er at når jeg skal ha' mit object til at registrere en Hittest, ja så kan jeg
kun finde ud af at lave følgende script:

    if (_root.Object1.hitTest(this)==true) {
        removeMovieClip(this);
        removeMovieClip(_root.Object1);
    } else if (_root.Object2.hitTest(this)==true) {
        removeMovieClip(this);
        removeMovieClip(_root.Object2);
    } else if (_root.Object3.hitTest(this)==true) {
        removeMovieClip(this);
        removeMovieClip(_root.Object3);
    }
OSV OSV OSV

Og det holder jo ikke !!!!
Da jeg kan så kan forsætte det script feks. helt op til 100 eller 1000 for den sags skyld..

HVORDAN kan jeg lave en variable som så jeg kun behøver lave en :
    if (_root.Object'NytTal'.hitTest(this)==true) {
        removeMovieClip(this);
        removeMovieClip(_root.Object'NytTal');
    }

Jeg forstiller mig en slags joker eller asterix..
Men jeg er gået i selvsviiiing og har som sagt brug
for hjælp!!!

ANYBODY Please -> 200 points
Avatar billede baitianlong Nybegynder
28. oktober 2002 - 17:59 #1
for(x = 1; x < 100; x++) {
  if(this.hitTest(_root["Object" + x], true)) {
      this.removeMovieClip();
      _root["Object" + x].removeMovieClip();
  }
}

(o;
Avatar billede nikolajdu Nybegynder
28. oktober 2002 - 18:01 #2
Legende den går ikke.... Hvor vil det reagere hvis nr 42 er fjernet fordi det opfyldte hittesten....
Avatar billede baitianlong Nybegynder
28. oktober 2002 - 18:08 #3
Nårh. Fordi det er med ELSE if ??? (o; - Så må vi jo tænke lidt mere )o;
Avatar billede nikolajdu Nybegynder
28. oktober 2002 - 18:14 #4
for (a in _root) {
    if (typeof _root[a] == "movieclip") {
        if (_root[a]._name.indexOf("Object") != -1) {
            if (_root[a].hitTest(this) == true) {
                removeMovieClip(this);
                removeMovieClip(_root[a]);
            }
        }
    }
}

Måske....
Avatar billede baitianlong Nybegynder
28. oktober 2002 - 18:17 #5
tal = new Array();
for(x = 1; x <= 100; x++) {
  tal.push(x);
}
for(i = 0; i < tal.length; i++) {
  if(this.hitTest(_root["Object" + tal[i]], true)) {
      this.removeMovieClip();
      _root["Object" + tal[i]].removeMovieClip();
      tal.shift();
  }
}

...meget "måske" (o;
Avatar billede nikolajdu Nybegynder
28. oktober 2002 - 18:19 #6
Nu tjekker du igen indenfor et bestemt interval (1 til 100)

for (x in _root) tager kun de objekter der rent faktisk findes i root. Jeg tjekker så om det er et movieclip og om det hedder noget med  "Object"
Avatar billede baitianlong Nybegynder
28. oktober 2002 - 18:25 #7
Cool !!  Jeg bakker lige ud igen (O; - kloge Aage *S*
Avatar billede bootlab Nybegynder
28. oktober 2002 - 19:40 #8
Mange tak for din hjælp legende.dk .....
Men det ser ud til at nikolajdu har fat i noget..

Jeg må dog indrømme at det eksempel som jeg har stillet op IKKE er det som jeg bruger i mit forsøg!!!

Den rigtige ser sådan her ud:

    if (_parent.WarZone.Alien1.UFO.hitTest(this)==true) {
        removeMovieClip(this);
        _parent.WarZone.Alien1.UFO.Hit = _parent.WarZone.Alien1.UFO.Hit - Impact;
    }

- - - - - - - - - - - - - - - - - - -

Dvs. at "object" istedet for, rigtigt hedder "Alien" + et tal...

Og jeg ved derfor ikke helt hvordan jeg så skal omskrive nikolajdu's eksempel, idet mit movieclip jo ligger i et andet movieclip OG at det også indeholder et Movieclip!!!

Kan du hjælpe mig nikolajdu?
Avatar billede nikolajdu Nybegynder
28. oktober 2002 - 20:57 #9
for (a in _parent.WarZone) {
    if (typeof _parent.WarZone[a] == "movieclip") {
        if (_parent.WarZone[a]._name.indexOf("Alien") != -1) {
            if (_parent.WarZone[a].UFO.hitTest(this) == true) {
                removeMovieClip(this);
                removeMovieClip(_parent.WarZone[a]);
            }
        }
    }
}


Sårn i den stil?
Avatar billede bootlab Nybegynder
28. oktober 2002 - 21:57 #10
ewew !!!
Det virker ikke :/
Avatar billede nikolajdu Nybegynder
28. oktober 2002 - 22:06 #11
Jeg er bange for du må smide filen ud som et link så vi kan se hvordan den er lavet.

Alternativt så prøv at indsætte nogle trace() så du kan se hvilke variabler den finder og hvilke den ikke gør.

for (a in _parent.WarZone) {
    trace(_parent.WarZone[a]);
    if (typeof _parent.WarZone[a] == "movieclip") {
        trace("movieclip fundet : "+_parent.WarZone[a]._name);
        if (_parent.WarZone[a]._name.indexOf("Alien") != -1) {
            trace("alien : "+_parent.WarZone[a]._name);
            if (_parent.WarZone[a].UFO.hitTest(this) == true) {
                trace("hittest : "+_parent.WarZone[a]._name);
                removeMovieClip(this);
                removeMovieClip(_parent.WarZone[a]);
            }
        }
    }
}
Avatar billede bootlab Nybegynder
28. oktober 2002 - 22:17 #12
Den tracer bla.:
_level0.World.WarZone.Alien2
movieclip fundet : Alien2
alien : Alien2
_level0.World.WarZone.Alien1
movieclip fundet : Alien1
alien : Alien1

men ikke nogle hittest!!
Avatar billede bootlab Nybegynder
28. oktober 2002 - 22:23 #13
Upz ... jeg glemte at droppe et link

http://www.bootlab.dk/retro-fighter/
Avatar billede nikolajdu Nybegynder
28. oktober 2002 - 23:32 #14
Fedt spil manner :))

Anyway ser det ud til at virke. Ramme jeg ufoen, så ryger mit shield ned og jeg kan også skyde den.
Avatar billede bootlab Nybegynder
28. oktober 2002 - 23:47 #15
taaaark - jeg er glad for du kan li' det :D
grunden til det virker nu er fordi det er med den metode som jeg har lagt ud med i dette spørgsmål!!

men jeg vil ha' såen en funktion som vi er igang med sådan at jeg kan lave feks. 10 "originale" aliensMC og derefter duplikere dem sådan at jeg kan ha' den samme alien på flere gange på samme tid!
Avatar billede bootlab Nybegynder
28. oktober 2002 - 23:51 #16
Hvis du hjælper mig igennem mit problem :)
Ja så får du udover de 200 P. også en kreditering i "Thanks to"
når det er færdigt og kommer op!! :D
Avatar billede nikolajdu Nybegynder
28. oktober 2002 - 23:53 #17
tracer den noget i din hittest???
Avatar billede bootlab Nybegynder
29. oktober 2002 - 00:01 #18
Nope!
Den tracer alle skud, meteore og aliens - men ikke hittesten på MC "UFO"
som ligger i alien :/
som sagt så tracer den bla.:

_level0.World.WarZone.Alien2
movieclip fundet : Alien2
alien : Alien2
_level0.World.WarZone.Alien1
movieclip fundet : Alien1
alien : Alien1

fra output!!
Avatar billede nikolajdu Nybegynder
29. oktober 2002 - 00:09 #19
Vi må se på det i morgen aften.
Avatar billede bootlab Nybegynder
29. oktober 2002 - 00:14 #20
ok tak for idag :D
/me hopper i kanen
Avatar billede bootlab Nybegynder
29. oktober 2002 - 18:54 #21
nå nikolaj.. har du flere forslag eller hvad - jeg sidder klar til at afprøve :)
Avatar billede pyroman Nybegynder
30. oktober 2002 - 20:07 #22
Hvad med...
På dit MC der bliver dublicated:

onClipEvent (enterFrame) {
  if (this._name != "UFO" and this.hitTest (mit.MC)) {
          removeMovieClip (this);
  }
}

Eller er det ikke det du mener?

/Filip
Avatar billede nikolajdu Nybegynder
30. oktober 2002 - 20:08 #23
Jeg er klar - Har bare ikke tid i aften heller :(
Avatar billede barklund Nybegynder
31. oktober 2002 - 11:16 #24
Prøv at ændre følgende trace:

trace("alien : "+_parent.WarZone[a]._name);

Til dette:

trace("ufo: "+_parent.WarZone[a].UFO);

Og fortæl output her igen...

/Barklund
Avatar billede bootlab Nybegynder
31. oktober 2002 - 23:16 #25
hmm nikolaj... . jeg må ha' tumpet lidt for meget rundt - for hittesten bliver detectet...
Jeg må vist ha' været meget træt -> sorry..
Du får hermed dine velfortjente point - og jeg giver dig besked når
spillet officielt er oppe ;) ellers må vi se om jeg får brug for mere
hjælp :/

Til Filip og Barklund
Tak for jeres deltagelse - Filip du gav mig en god og logisk ide..
Barklund du fik mig til at teste nikolajs eksempel igen og igen..

Hvorfor kan man ikke dele point summen mere - nå det er Nikolaj vel
også glad for :)

/Brio
Avatar billede barklund Nybegynder
31. oktober 2002 - 23:42 #26
Du kan sagtens dele pointsummen mellem alle de svar, som der er givet, men da kun legende.dk har lagt et svar, så gav du ham alle pointene, selvom det virker som om, at nikolajdu skulle have haft dem...

Men det er vist et problem mellem dig og legenden, som dog er fair nok til at aflevere pointene tilbage igen til deres retmæssige ejer...
Avatar billede bootlab Nybegynder
31. oktober 2002 - 23:50 #27
AI AI AIIIII :/
Det er da rigtigt Barklund... det er jo Nikolaj som skal ha' dem..
ØV ØV - hvordan kan det teknisk lade sig gøre at jeg får givet nikolaj
pointene nu ?????
Avatar billede barklund Nybegynder
01. november 2002 - 00:23 #28
Det kan først ske, når legende vågner og opdager fejlen og selv henvender sig...

Du kan selvfølgelig oprette et nyt spm med de udlovede point og lade nikolaj svare der (husk ref til dette spm) og så blot vente på at legende giver dig dine point tilbage...
Avatar billede baitianlong Nybegynder
01. november 2002 - 13:25 #29
Tak for points (o;










Nej OK http://www.eksperten.dk/spm/278040
Avatar billede nikolajdu Nybegynder
06. november 2002 - 20:28 #30
Tak for pointene til både legende og dig. :)

Og tak til barklund for at gennemtvinge yderligere undersøgelser...
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