Avatar billede mat Nybegynder
03. juni 2001 - 14:27 Der er 23 kommentarer og
1 løsning

Arcade

Jeg har et problem med et spil jeg er ved at lave.
Jeg har et fly som man styrer rundt og skyder andre fly med, MEN....mit skudMC begynder forfra når spilleren trykker igen (som man kunne forvente). Nu skal jeg så have løst denne lille misere. Jeg har prøvet duplicateMovieClip i alle afarter (synes jeg selv) OG DET VIRKER IKKE....

Mit skudscript ser således ud

onClipEvent (enterFrame) {
    if (Key.isDown(77)) {
        tellTarget (\"_root.ship.missil\") {
gotoAndPlay (3);
}
}
}

Mvh Martin

Avatar billede hoejrup Nybegynder
03. juni 2001 - 14:35 #1
Du kan se opbygningen af et arkade skyde spil her:

http://www.flashkit.com/tutorials/Games/Building-David_Do-611/index.shtml

/per
Avatar billede mat Nybegynder
03. juni 2001 - 14:43 #2

Jeg vil hellere lære det på denne måde!

ikke flere linx tak
Avatar billede hoejrup Nybegynder
03. juni 2001 - 14:48 #3
Ok

Du skal lave dit skud actionscript på flyet, og du skal ikke anvende tellTarget. Men i stedet for skal du lave en dublicateMovieClip af dit projektil.

/per
Avatar billede mat Nybegynder
03. juni 2001 - 14:55 #4

1: ?
2: Jamen jeg er da nødt til at bruge tellTarget til at fortælle at når der er trykket skal den afspille skudMC.

At scripte tweeningen gør efter min bedste overbevisning ingen forskel. Jeg er stadig nødt til at have to frames i skudMC: en stop, en _x+=10....eller hvad?

Mvh Martin 

Avatar billede hoejrup Nybegynder
03. juni 2001 - 15:05 #5
1:?
2: Nej, det er ikke nødvendig. Den skal ikke afspille skudMC, men en kopi af skudMC.

Du skal have en this._x+=10 på din skudMC, samt en tilstand der eksekvere en this.removeMoviecClip();

/per
Avatar billede hoejrup Nybegynder
03. juni 2001 - 15:08 #6
På dit flyver MC kan du lægge koden:

_root[\"skudMC\"+i].gotoAndPlay(2);

/per
Avatar billede mat Nybegynder
03. juni 2001 - 15:10 #7

ok. men der er stadig et par ting jeg er lidt usikker på:

Hvis jeg ikke har en stop i skudMC vil det default afspille dette når spillet går igang, eller?

Hvorfor denne removeMovieClip, jeg har en hitTest som sender skudMC tilbage til sit udgangspunkt (frame1 stop)

Mvh Martin
Avatar billede mat Nybegynder
03. juni 2001 - 15:13 #8

Al den kode vi taler om her ligger på shipMC, hvor ville du sætte den der ind?

-Martin
Avatar billede hoejrup Nybegynder
03. juni 2001 - 15:21 #9
Du skal have en stop i starten af dit mc i den første frame.

Hvis du laver en dublicateMovieClip, så skal du også lave en removeMovieClip.

hitTest skal anvendes til at afspille dit mål med, så du kan se målet bliver smadret via en animation. For derefter at blive fjernet med removeMovieClip.

På projektilet kan du lægge koden

for (i=1; i<=_root.antalFjender; i++){
    if (this.hitTest(_root[\"fjende\"+i])){
        _root[\"fjende\"+i].gotoAndPlay(2);
        }
}
Avatar billede hoejrup Nybegynder
03. juni 2001 - 15:27 #10
Du trækker dit movieclip ud på scenen, og tildeler det et instance navn. Vælge objektet og tildeler actionscript koden her:

onClipEvent (enterFrame) {

}

/per
Avatar billede mat Nybegynder
03. juni 2001 - 15:27 #11

Duplikerer duplicateMovieClip ikke klippets actions?

Efter eksplosionsanima´en sender jeg bare playheaded til en tom frame. Samme effekt!

note: stien til skudMC er _root.ship.missil

Men jeg vil forsøge med de koder du har lagt for dagen.

-Martin
Avatar billede mat Nybegynder
03. juni 2001 - 15:30 #12

Jeg tror vi snakker forbi hinanden her!

Jeg kan ikke bruge kode fra eksemplet på flashkit. Min struktur er fuldstændig anderledes. Dte er muligt den er helt forkert men jeg mener bare at selv ud fra den struktur jeg har brugt burde det kunne lade sig gøre

Martin
Avatar billede hoejrup Nybegynder
03. juni 2001 - 15:32 #13
dublicateMovieClip dublikere både actionscriptet og grafikken.

Lav missilet i en selvstændigt movie clip, derefter kan du dublikere det på følgende måde:

_root.missil.duplicateMovieClip( \"missil\"+taeller, taeller );

/per
Avatar billede hoejrup Nybegynder
03. juni 2001 - 15:33 #14
Selvfølgelig kan din metode lade sig gøre, men du kan kun skyde et projektil adgangen.

/per
Avatar billede hoejrup Nybegynder
03. juni 2001 - 15:34 #15
Vi snakker ikke forbi hinanden, men du er låst fast i din egen metode.

/per
Avatar billede mat Nybegynder
03. juni 2001 - 15:35 #16

Nu tror jeg vi er på samme side!

godt så: hvad er taeller? er den defineret andetsteds eller er det ligemeget?

Martin
Avatar billede hoejrup Nybegynder
03. juni 2001 - 15:45 #17
Hvergang du trykker på aftrækkeren så skal Movie klip kopien tildeles et navn:

missil1
missil2
missil3

Det næste taeller tal beskriver dybden af movie klippet. Dybden beskriver hvor movieklippet ligger i forhold til resten af grafikken. Hvis fjenden ligger i dybde 30, og missilerne bevæger sig mellem 1 og 29. Så vil missilerne ligge under billedet af fjenden, hvis de passere hinanden på skærmen.

/per
Avatar billede mat Nybegynder
03. juni 2001 - 15:46 #18

ok, jeg er låst fast på min egen metode, men skifter jeg fremgangsmåde nu kan jeg ligeså godt skrotte al den kode jeg har lavet. Ikke at det er så meget men det er mig der har lavet den. Ikke enelleranden tutorial.

Men mener du ikke at det kan lade sig gøre overhovedet, med min metode? Så er jeg bange for at jeg ikke helt forstår princippet i duplicatemovieClip.......men du har ret jeg har prøvet at formulere det på 5-6 forskellige måder og der var ikke nogen der virkede

Martin
Avatar billede mat Nybegynder
03. juni 2001 - 15:51 #19
ad.:taeller


Min hitTest på fjenderne genkender jo missilets instancenavn hvis de så hele tiden har et nyt navn er der et lille problem

Kan man formulere noget i retning af
this.hitTest(\"_root.ship.missil\"+i)????
(hvor this er fjenderne.)

Martin
Avatar billede hoejrup Nybegynder
03. juni 2001 - 16:03 #20
Selvfølgelig har du lavet din kode selv, jeg laver også min egen kode. Men jeg er villig til at lære af andres kode, og samtidig udvikle min egen metode. Der er tilpasset mit eget spil grafisk mv.

Du har trukket dit missil ud på scenen fra library, og tildelt det instance navnet missil.

På dit fly på scenen har du lagt koden:

onClipEvent (enterFrame) {

taeller++;
_root.missil.duplicateMovieClip( \"missil\"+taeller, taeller );

}

Du skal lægge følgende script på dit missil:

onClipEvent (enterFrame) {
  for (i=1; i<=_root.antalFjender; i++){
Avatar billede hoejrup Nybegynder
03. juni 2001 - 16:06 #21
onClipEvent (enterFrame) {

for (i=1; i<=_root.antalFjender; i++){
    if (this.hitTest( _root[\"fjende\"+i])){
        _root[\"fjende\"+i].gotoAndPlay( 2 );
        }
   
  }
}
}

/per
Avatar billede hoejrup Nybegynder
03. juni 2001 - 16:10 #22
Hvis du hele tiden har et maksimum antal af fjender på skærmen, så kan du anvende ovenstående metode.

/per
Avatar billede mat Nybegynder
03. juni 2001 - 17:55 #23

Hvis jeg bruger dette script:

onClipEvent (enterFrame) {

taeller++;
_root.missil.duplicateMovieClip( \"missil\"+taeller, taeller );

}

refererer jeg til et instance på main timeline, mit missilinstance ligger i shipMC´et. Men jeg prøver lige at se når jeg kommer hjem(har ikke .fla´en med)

Jeg har et max på 10 fjender eller sådan noget. Nu er jeg jo ikke lige helt færdig så det kan jo ændre sig, he he.

Det er hvad jeg har lagt på fjenderne, det fungerer udemærket, det er ikke der jeg har problemer(endnu!):

onClipEvent (enterFrame) {
    if (this.hitTest(_root.ship.missil)) {
        this.gotoAndPlay(2);
        tellTarget (_root.ship.missil) {
            gotoAndStop (1);
        }
    }
}

Mvh Martin
Avatar billede mat Nybegynder
11. juli 2001 - 13:36 #24
nå, men det er fortid
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