[Flash5] verkeerde uitvoervolgorde actionscript

Pagina: 1
Acties:

  • Stimpy001
  • Registratie: Maart 2000
  • Laatst online: 16-09-2025
Situatieschets: Ik ben bezig met het maken van een soort actionscript-library in Flash 5, die xml ophaalt op de server en dit dan terug geeft in bepaald datatype. Alle functies die hiervoor nodig zijn stop ik in een include-file genaamd functions.as. Ik heb momenteel 1 timeline en vanuit daar doe ik het volgende:
code:
1
2
3
4
5
6
on (press) {
     #include "functions.as"
     var returnedVar;
     returnedVar = _level0.GetTimeOnServer();
     trace ("Actual returnedVar: " + returnedVar);
}


Het is dus zo dat GetTimeOnServer een functie is die in functions.as staat. Simpel gezegd haalt deze het XML bestand op, haalt de whitespaces eruit en converteert het naar een String die terug gegeven moet worden naar returnedVar. Dit ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
GetTimeOnServer = function() {
    var url = "...";
    var time = new String();
    myXML = new XML();
    myXML.load(url);
    myXML.onLoad = function(success) {
        if(success) {
            stripWhitespaceDoublePass(Object.myXML);
            time = StringReader(Object.myXML.FirstChild);
        } else {
            trace("Error loading XML"); 
        }
        trace("Function returned value: " + time);
        return time;
    }
}


Het gehele script wordt dus geactiveerd middels een knop vanuit de main timeline. Logisch gezien zou eerst GetTimeOnServer afgehandeld moeten worden en dus Function returned value: 15.32.01 afgedrukt moeten worden via trace voordat er pas output van de main timeline zichtbaar wordt.

Nu het probleem: Op de een of andere manier blijft returnedVar leeg en wordt deze eerder afgerukt dan de output van de functie GetTimeOnServer, er is dus soort een race-condition. Het lijkt er op dat actionscript gewoon verder gaat met het uitvoeren van de main timeline zonder te wachten op de terugkeerwaarde van de functie GetTimeOnServer. De output is dus nu:

code:
1
2
Actual returnedVar: 
Function returned value: 15:38:04


Het moet dus andersom zijn en Actual returnedVar moet ook de waarde hebben van de functie GetTimeOnServer. Wie kan mij hierbij helpen? Indien nodig kan ik nog meer informatie verstrekken.

Wat jij vergeten bent, hoeft voor mij geen spoed te zijn.