Tvinga JavaScript att manipulera HTML och rita om sidan innan scriptet körts färdigt

Tråden skapades och har fått 3 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Stockholm
  • 2010-08-01 16:12

God dag, gott folk!

Jag sitter och försöker att skapa ett litet spel i JavaScript, komplett med animeringar i gif-formar, och har nu stött på ett litet problem. Rubriken till den här tråden representerar min egen tolkning av vad det är som behöver göras för att få ordning på det hela, men det är möjligt att jag är ute och cyklar. Jag ska förklara.

Jag vill åstadkomma följande:

När sidan laddas vill jag att en viss bild, start.gif, ska visas. Sedan vill jag köra ett JavaScript som under en viss tidsperiod loopar, och i varje looprunda ändrar på gif-bilden. Jag vill även att dessa förändringar av bilder ska ske med olika randomiserade tidsintervall.

Detta implementerar jag på följande sätt:

<HEAD>
function runGame() {
LITE KOD. ELLER OKEJ. RÄTT MYCKET KOD.
}
</HEAD>
<BODY>
<IMG scr="start.gif">
<SCRIPT>
runGame();
</SCRIPT>
</BODY>

Vad som händer nu, när jag kör det hela är följande:

Ingenting händer, ingenting händer, ingenting händer, den sista bilden av alla de bilder som mitt JavaScript har valt ut visas.

Nu är jag inte så erfaren med JavaScript men jag antar att följande händer under huven så att säga. Browsern ritar inte upp något innehåll förrän all javascriptkod har körts. Javascript skickar inte ut den nya bildadressen förrän hela scriptet har körts färdigt.

Är detta korrekt?

Vad jag skulle önska är att på något sätt tvinga javascriptet att skicka adressen till den nya bilden till img-taggen och sedan rita om sidan innan den fortsätter att köra scriptet.

Är detta möjligt på något sätt? Eller har jag fått allt om bakfoten?

Input tages tacksamt emot!

  • Medlem
  • 2010-08-01 16:54

Nja, ska inte vara några problem att få javascriptet att agera som du vill. Dock beror det ju helt på vilken lösning du använder i "lite/massa kod", det du lagt upp nu säger inte så mycket…
För tidsberoende funktioner är det ofta värt att använda setTimeout eller setInterval istället för att låta scriptet "pausa" på olika ställen.

  • Medlem
  • Stockholm
  • 2010-08-01 17:22

Jag har funderat lite mer på det här och kommit fram till hur jag kan omstrukturera mitt program så att jag kan använda mig av setTimeout och avsluta scriptet så länge.

Dock undrar jag fortfarande om min tolkning av hur JavaScript körs är rätt. Det vill säga att HTML-sidan inte påverkas på något sätt förrän alla Script har körts.

  • Medlem
  • Stockholm
  • 2010-08-02 00:07

Tack för inputen SirN. Jag hoppade över att använda mig utav "pauser" och gick istället på setTimeout-metoden. Och om jag inte hör någonting annat så antar jag att JavaScript opererar på det sättet som jag beskrev.

1
Bevaka tråden