Hejsa, jeg er igang med at lave et platform spil i flash. Og prøver lige nu at sætte "scrolling" ind, så at når min figur når en tilpas længde til højre eller venstre, så flytter "platformen" (altså gulve, mure osv) sig så det passer.
Min flash fils dimensioner er 500x200 og jeg ønsker således at når min "mand" er under 150 på x-aksen så skal platformen begynde at bevæge sig den ene vej, og hvis han er over 350 på x-aksen skal den så gå den anden vej. Altså således at hvis manden går rundt imellem 150-350 på x-aksen, så bevæger platformen sig ikke, men hvis han derimod går udenfor, gør den.
Giver det mening?
Hele koden er inde i en
_root.onEnterFrame = function() {
Kodningen for bevægelse til ser sådan her ud:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | if (Key.isDown(Key.LEFT)) { xspeed -= speed; walking = true; if (_root.level_container.hero._x = 150){ level_container._x += 3; } } if (Key.isDown(Key.RIGHT)) { xspeed += speed; walking = true; if (_root.level_container.hero._x > 350){ level_container._x -= 3; } } |
"level_container" er platformen, som skal bevæge sig
"hero" er spilleren
Problemet er umiddelbart at Heroen er created i "level_container" hvilket gør det meste andet meget nemmere, men det betyder så også at den regner positionerne (150 og 350) til at være inden for "level_container" moviecliped.
Så mit spørgsmål er, hvordan for jeg f.eks. positionen "150" til at være positionen i den overordnede flash fil (altså alla _root), istedet for inde i "level_container". Det er altså positionen "150" i den her kodning (se nedenfor) som skal være den overordnede position istedet for inde i movieclipped
if (_root.level_container.hero._x > 150)
1 kommentar
Der er flere mulige løsninger, hvis ellers spørgsmålet stadig er relevant. Enten kan du definere "Hero" uden for "level_container" movieclip'et, eller også kan du bruge "MovieClip.localToGlobal()" (se beskrivelsen i AS2 Language Reference) for at få skærmkoordinatet i stedet for det nestede movieclips koordinat.