Avatar billede Slettet bruger
11. marts 2003 - 09:29 Der er 26 kommentarer og
1 løsning

en slags mur/boundary med speciel effekt

jeg er ved at lave et lille rpg spil, men jeg vil ikke have at ham manden kan gå udenfor skærmen, så hvordan gør jeg sådan han ikke kan? her er den kode jeg har på mit bevægelige mc:

onClipEvent (load) {
moveSpeed = 19;
}
onClipEvent (enterFrame) {
if (Key.isDown (Key.RIGHT)) {
this._x += moveSpeed;
} else if (Key.isDown (Key.UP)) {
this._y -= moveSpeed;
} else if (Key.isDown (Key.DOWN)) {
this._y += moveSpeed;
} else if (Key.isDown (Key.LEFT)) {
this._x -= moveSpeed;
}
}

og så vil jeg gerne vide om det er muligt at gøre sådan at når man går ud i fx siden, kommer den hen på en anden frame, så man nærmest er gået hen til en ny fx. by?
Avatar billede mat Nybegynder
11. marts 2003 - 09:36 #1
du kan tjekke på din figurs x eller y position:

(tilføjes i din enterFrame):

if (this._x > 560) { // tjekker om figuren er på vej ud af skærmen
_root.backGround.gotoAndStop("next_town"); // rykker et fiktivt baggrunds-movieclip til en ny frame
this._x = -10; // rykker figuren til starten af skærmen
}

det burde være princippet i det :)

mvh mat
Avatar billede Slettet bruger
11. marts 2003 - 09:41 #2
det virker sådan set, men når man så skal til starten af skærmen, skal man først trykke til venstre (hvis man går mod højre) før man kommer til starten af skærmen... kan det ændres så det sker med det samme?
Avatar billede Slettet bruger
11. marts 2003 - 09:48 #3
det her virker med det der autoryk:
if (this._x < 0) { // tjekker om figuren er på vej ud af skærmen
_root.backGround.gotoAndStop("next_town"); // rykker et fiktivt baggrunds-movieclip til en ny frame
this._x = 550; // rykker figuren til starten af skærmen
}

men ikke det her?:
if (this._x > 550) { // tjekker om figuren er på vej ud af skærmen
_root.backGround.gotoAndStop("next_town"); // rykker et fiktivt baggrunds-movieclip til en ny frame
this._x = 0; // rykker figuren til starten af skærmen
}

tror det er det. og skal jeg så lave et mc som jeg så kalder backGround med forskellige baggrunde i hver frame?
Avatar billede pyroman Nybegynder
11. marts 2003 - 12:40 #4
Det øverste script rykker manden til position x = 550 og den næste til x = 0 - det er stort set det samme script, det er bare værdierne for hvornår mandne er ude af kortet der er forskellige, så de burde begge virke...
Og ja, din baggrund skal ligge i et MC som hedder backGround.
Hvis du ikke vil have at man skal kunne gå ud alle steder så kan du lave et movieclip i dit baggrunds-MC. Så laver du en hitTest på det:

onClipEvent(enterFrame){
  if(this.hitTest(_root.minMand){
    _parent.gotoAndStop("nextTown");
    _root.minMand._x = 0;
  }
}

/Filip
Avatar billede Slettet bruger
11. marts 2003 - 13:05 #5
men den skifter først til den anden position fx x = 0 når man trykker på venstre piletast
Avatar billede pyroman Nybegynder
11. marts 2003 - 13:16 #6
Hvis du bliver ved med trykke til højre så skulle din mand når han går udenfor kortet eller rammer movieclippet straks blive ført til position x = 0! Ellers har du måske glemt at lave et loop på din film?
Avatar billede Slettet bruger
11. marts 2003 - 13:48 #7
jeg bruger en stop(); action i første frame ikke en loop
Avatar billede pyroman Nybegynder
11. marts 2003 - 14:38 #8
Det er det der er problemet. På din mand eller andet MC hvor du har actionen hedder clipEventen "enterFrame". Det betyder at scriptet kun bliver udført hver gang at MC'et går ind i et nyt frame i tidslinien. Lav et loop på din film: behold indholdet af første frame med fjern stop() actionen og i frame2 skriv dette: gotoAndStop(1); det burde løse problemet!!!
Avatar billede Slettet bruger
11. marts 2003 - 14:57 #9
det virker stadig ikke
Avatar billede pyroman Nybegynder
11. marts 2003 - 15:01 #10
Er man da stadig nødt til at klikke på venstre-knappen efter man har trykket på højre indtil man har nået kanten? For det lyder som en mærkelig fejl.
Avatar billede mat Nybegynder
11. marts 2003 - 15:10 #11
pyroman > Det er da ikke nødvendigt med frameloops, det er da derfor vi har enterFrame?

saxe >

onClipEvent (load) {
    speed = 10;
    xMax = yMax = 200;
    xMin = yMin = 0;
}
onClipEvent (enterFrame) {
    if (Key.isDown(Key.RIGHT)) {
        this._x += speed;
    }
    if (Key.isDown(Key.LEFT)) {
        this._x -= speed;
    }
    if (Key.isDown(Key.UP)) {
        this._y -= speed;
    }
    if (Key.isDown(Key.DOWN)) {
        this._y += speed;
    }
    ////////////////////////////
    if (this._x - (this._width/2) > xMax) {
        this._x = xMin - (this._width/2);
    }
    else if (this._x + (this._width/2) < xMin) {
        this._x = xMax + (this._width/2);
    }
}

filmen skal være 200 pix bred og den virker begge veje, så mangler du bare y aksen.

mvh mat
Avatar billede Slettet bruger
11. marts 2003 - 15:21 #12
hvis mit mc ikke skal starte uden for skærmen men lige indenfor, hvad skal jeg så gøre?
Avatar billede mat Nybegynder
11. marts 2003 - 15:25 #13
sæt det der hvor det skal starte - i ovennævnte er filmens dimensioner defineret til 200x200 - du kan selv definere dem ved at ændre på xMin og xMax.

Movieclippet bliver ikke placeret et bestemt sted, hvis det bliver rykket ud af skærmen er det fordi du har lagt det på et x-koordiant der er højere en xMax.
Avatar billede Slettet bruger
11. marts 2003 - 15:29 #14
jeg kan ikke få både y- og xmax til at virke?! altså min film er 550*400 som jo er standard, og jeg er ikke specielt god til actionscripting
Avatar billede mat Nybegynder
11. marts 2003 - 15:32 #15
onClipEvent (load) {
    speed = 10;
    xMax = 550;
        yMax = 400;
        xMin = yMin = 0;
 
}

sæt det her i load istedet, så er dimensionerne på plads :)
Avatar billede Slettet bruger
11. marts 2003 - 15:38 #16
okay, det virker, den starter stadig lidt udenfor (kan ikke rette det) men det må jeg så leve med, men hvad så med det med at den skifter frame når den går udenfor rammen til venstre fx.
Avatar billede mat Nybegynder
11. marts 2003 - 15:52 #17
<snip>

if (this._x - (this._width/2) > xMax) {
        this._x = xMin - (this._width/2);
        _root.backGround.gotoAndStop(2); // ret selv framenummer her
    }
    else if (this._x + (this._width/2) < xMin) {
        this._x = xMax + (this._width/2);
        _root.backGround.gotoAndStop(2); // ret selv framenummer her
    }

</snip>


Dit baggrundsmovieclip skal så have instancenavn "backGround" (uden citationstegn)
Avatar billede Slettet bruger
11. marts 2003 - 16:08 #18
jeg har lagt en stop(); action i frame 1 (den første baggrund) i mit backGround mc og så lavet nummer 2 baggrund i frame 2, men den viser ikke 2'eren når jeg går ud af siderne
Avatar billede mat Nybegynder
11. marts 2003 - 16:10 #19
har du husket at skrive instancenavnet i propertiespanelet?
Avatar billede Slettet bruger
11. marts 2003 - 16:17 #20
nej, det havde jeg glemt (havde bare kaldt mit mc backGround da jeg lavede det) men den kan jo ikke gå tilbage igen
Avatar billede mat Nybegynder
11. marts 2003 - 16:36 #21
her er et script hvor du kan gå til 4 forskellige frames i "backGround" - den starter så i frame 1 og tæller op når du går til højre og ned når du går til venstre:

onClipEvent (load) {
    speed = 10;
    xMax = yMax = 200;
    xMin = yMin = 0;
    count = 1;
}
onClipEvent (enterFrame) {
    if (Key.isDown(Key.RIGHT)) {
        this._x += speed;
    }
    if (Key.isDown(Key.LEFT)) {
        this._x -= speed;
    }
    if (Key.isDown(Key.UP)) {
        this._y -= speed;
    }
    if (Key.isDown(Key.DOWN)) {
        this._y += speed;
    }
   
    if (this._x - (this._width/2) > xMax) {
        this._x = xMin - (this._width/2);
        if (count <= 4)
            ++count;
        switch (count) {
            case 1:
                _root.backGround.gotoAndStop(count);
            case 2:
                _root.backGround.gotoAndStop(count);
            case 3:
                _root.backGround.gotoAndStop(count);
            case 4:
                _root.backGround.gotoAndStop(count);
        }
    }
    else if (this._x + (this._width/2) < xMin) {
        this._x = xMax + (this._width/2);
        if (count >= 1)
            --count;
        switch (count) {
            case 1:
                _root.backGround.gotoAndStop(count);
            case 2:
                _root.backGround.gotoAndStop(count);
            case 3:
                _root.backGround.gotoAndStop(count);
            case 4:
                _root.backGround.gotoAndStop(count);
        }
    }
}

-mat
Avatar billede Slettet bruger
11. marts 2003 - 16:54 #22
det virker ikke
Avatar billede Slettet bruger
11. marts 2003 - 16:55 #23
jeg kan kun få den til at vise 1 og 4
Avatar billede mat Nybegynder
11. marts 2003 - 16:56 #24
smid din mail så sender jeg den til dig
Avatar billede Slettet bruger
11. marts 2003 - 17:26 #25
swishdk@yahoo.dk
Avatar billede Slettet bruger
11. marts 2003 - 17:38 #26
okay, jeg lukker så
Avatar billede Slettet bruger
12. marts 2003 - 08:46 #27
men hvordan laver man så en mur, som gør at ens person ikke kan gå videre?
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