[ zstevovich @ 01.05.2011. 09:58 ] @
Ima li neko ideju kako da rešim problem sa funkciom onLoad, upitanju je sledeći primer:

Code:
var xmlGame:XML = new XML();
//---------------------AS2
    xmlGame.ignoreWhite = true;
    xmlGame.onLoad = function(success:Boolean) {
        if (success){
        trace("connection success");
                runGame();
        } else {
        trace("connection error");
        }
     };
serverLoad.sendAndLoad(gameURL+time,xmlGame,"POST");


Problem je kada je zagušena konekcija, dešava se da se server odazove za nekoliko sekundi, kada nema neta stvar je jasna, ne može da se izvrši. Kako bih mogao da prekinem ovu funkciju onLoad ako nema odziva servera 2 sekunde, te bih tako mogao da kontrolišem konekciju, mada se zagušenja ne dešavaju često ali bih voleo i kada se dese da ne dozvolim da se učitavanje sa servera čeka po nekoliko sekundi već da prekinem funkciju odmah posle dve sekunde,

Unepred hvala
[ MenOfHonor @ 01.05.2011. 23:02 ] @
Možeš koristiti setInterval() funkciju koja prihvata 3 parametra: naziv funkcije koja će se pozvati, dužinu trajanja izraženu u milisekundama i parametre koji se mogu proslediti pozvanoj funkciji. Na primer možeš navedeni kod staviti u jednu funkciju koju ćeš pozivati, navesti dužinu trajanja od 1000 ms, a sve to možeš smestiti u jednu promenljivu koju ćeš posle proslediti clearInterval() funkciji:
Code:
var sekunde:Number = 0;
var interval:Number;

function mojaFunkcija() {
    xmlGame.onLoad = function(success:Boolean) {
        if (sekunde < 2) {
            if (success) {
                trace("connection success");
                runGame();
                clearInterval(interval); // ukoliko je konekcija uspostavljena prestajemo da pozivamo setInterval() funkciju
                                return false; // izlazimo iz funkcije
            }
            else {
                sekunde++;
            }
        } 
        else {
            trace("connection error");
            clearInterval(interval); // kada prodje 2 sekunde prestajemo da pozivamo setInterval() funkciju
            return false; // izlazimo iz funkcije
        }
    };
}

interval = setInterval(mojaFunkcija, 1000); // pozivamo funkciju setInterval() i smeštamo je u promenljivu interval


[Ovu poruku je menjao MenOfHonor dana 02.05.2011. u 00:31 GMT+1]
[ StarCraft @ 02.05.2011. 08:17 ] @
... ili još jednostavnije: setTimeout na 2 sekunde.
[ MenOfHonor @ 02.05.2011. 11:27 ] @
To je još jednostavnije. U slučaju korišćenja setTimeout() funkcije kod bi izgledao ovako:
Code:
xmlGame.onLoad = function(success:Boolean) {
    var timeout:Number = setTimeout(mojaFunkcija, 2000); // nakon 2 sekunde pozivamo funkciju mojaFunkcija()
    if (success) {
        trace("connection success");
        clearTimeout(timeout); // ukoliko je uspostavljena konekcija isključićemo tajmer
        runGame();
    }
}

function mojaFunkcija() {
    trace("connection error");
}