Avatar billede morano Nybegynder
08. august 2006 - 18:15 Der er 8 kommentarer

2 på en gang? hvorfor ikke

Hej,
jeg har nu fået 'bikset' mig noget flash sammen der gør at man kan logge ind og så får man en lille firkant ind i en frame. Hvis der er flere der har det åbent på sammen tid, kan man så se hinanden. Problemet er bare at når der er flere på, så kommer der sådan en advarsel: a script in this movie is causing adobe flash player 9 to run slowly. If it continues to run, your computer may become unresponsive. Do you want to abort the script?; og så er der så Ja/Nej knapper. Min erfaring er at den først kommer i vinduet der var åbent først! og derefter omkring 30sekunder senere i det andet. Og det er sådan(ca) hvergang.
Jeg er ikke sikker på om det sker hvis jeg havde åbent det med firefox browsere og ikke internet explore, men jeg kan ikke åben med begge brugere i firefox, fordi jeg bruger php-sessions. Men jeg ved at hvis jeg gør det med en firefox og en internet explore opføre den sig også sådan, så om det ikke er det samme med 2 Firefox?
Jeg har stødt på fejlen før, men det var fordi den ting der tjekkede om der var nogen der var online løb i ring uden at få noget info, fordi der ikke var nogen andre online end en selv. Men det ordnede jeg. Så for lidt siden fik jeg det skrevet færdigt(det jeg var igang med) og ville så se det. Men så kom den der fejl.
Det mærkelige er, at hvis det ikke er en person der opretter den ene bruger og logger ind, men du bare opretter den via databasen, uden faktisk at se flash 'filmen' så virker det fint. Men når der er en person bag hver figur, kommer den med den fejl.

Nogen der har haft samme problem, eller ved hvad der kan være galt?
Avatar billede mat Nybegynder
08. august 2006 - 18:29 #1
Umiddelbart vil jeg tro du har en uendelig løkke, men det er jo svært at vurdere uden noget kode?
Avatar billede morano Nybegynder
08. august 2006 - 18:37 #2
Dette er det eneste sted i koden hvor fejlen kan være sket:

/* laver en variabel hvor navnet på den sidste */
/* de/aktiverede brugers navn står */
var lastBruger;

/* her laver vi den variabel der modtager */
/* modtager udtrækne */
var retur:LoadVars = new LoadVars();

/* og her en function der bliver kaldt når chatten */
/* loades - det er denne funktion der udskriver */
/* alle de online brugere til skærmen i første omgang */
this.onLoad = function() {
    /* dette kaldes når database information er modtaget */
    retur.onLoad = function(success:Boolean) {
        /* hvis modtagelsen fra databasen gik godt */
        if(success && retur.antal != 0) {
            for(i=1;i<=retur.antal;i++) {
                if(i==1) {
                    makeUser(retur.bruger1,retur.xpos1,retur.ypos1);
                    lastBruger = retur.bruger1;
                } else if(i==2) {
                    makeUser(retur.bruger2,retur.xpos2,retur.ypos2);
                    lastBruger = retur.bruger2;
                } else if(i==3) {
                    makeUser(retur.bruger3,retur.xpos3,retur.ypos3);
                    lastBruger = retur.bruger3;
                } else if(i==4) {
                    makeUser(retur.bruger4,retur.xpos4,retur.ypos4);
                    lastBruger = retur.bruger4;
                } else if(i==5) {
                    makeUser(retur.bruger5,retur.xpos5,retur.ypos5);
                    lastBruger = retur.bruger5;
                } else if(i==6) {
                    makeUser(retur.bruger6,retur.xpos6,retur.ypos6);
                    lastBruger = retur.bruger6;
                } else if(i==7) {
                    makeUser(retur.bruger7,retur.xpos7,retur.ypos7);
                    lastBruger = retur.bruger7;
                }
            }
        /* hvis modtagelsen fra databasen ikke gik godt */
        }
    }

    /* laver en variabel vi sender til databasen */
    /* variablen indeholder intet, og bruges til intet */
    /* men den skal sendes alligevel! */
    var sendt:LoadVars = new LoadVars();
    /* og her sender vi så variablen til den angivet */
    /* adresse, og efterfølgene hvor udtrækket skal */
    /* sættes i, og det står til variablen "retur" */
    /* og derefter om det skal sendes med POST eller GET metode */
    sendt.sendAndLoad("http://christofferb.dk/chat/check_brugere.php?mitNavn="+mitNavn,retur,"POST");
}

/* denne funktion er faktisk præcist den samme */
/* som ovenstående funktion men denne funktion, */
/* til foreskel for ovenstående funktion, */
/* er denne funktion lavet til at kunne kaldes */
/* igen og igen så chatten hele tiden er opdateret */
setUsers = function() {
    /* dette kaldes når database information er modtaget */
    retur.onLoad = function(success:Boolean) {
        /* hvis modtagelsen fra databasen gik godt */
        if(success && retur.antal != 0) {
            for(i=1;i<=retur.antal;i++) {
                if(i==1) {
                    makeUser(retur.bruger1,retur.xpos1,retur.ypos1);
                    lastBruger = retur.bruger1;
                } else if(i==2) {
                    makeUser(retur.bruger2,retur.xpos2,retur.ypos2);
                    lastBruger = retur.bruger2;
                } else if(i==3) {
                    makeUser(retur.bruger3,retur.xpos3,retur.ypos3);
                    lastBruger = retur.bruger3;
                } else if(i==4) {
                    makeUser(retur.bruger4,retur.xpos4,retur.ypos4);
                    lastBruger = retur.bruger4;
                } else if(i==5) {
                    makeUser(retur.bruger5,retur.xpos5,retur.ypos5);
                    lastBruger = retur.bruger5;
                } else if(i==6) {
                    makeUser(retur.bruger6,retur.xpos6,retur.ypos6);
                    lastBruger = retur.bruger6;
                } else if(i==7) {
                    makeUser(retur.bruger7,retur.xpos7,retur.ypos7);
                    lastBruger = retur.bruger7;
                }
            }
        /* hvis modtagelsen fra databasen ikke gik godt */
        }
    }
    /* laver en variabel vi sender til databasen */
    /* variablen indeholder intet, og bruges til intet */
    /* men den skal sendes alligevel! */
    var sendt:LoadVars = new LoadVars();
    /* og her sender vi så variablen til den angivet */
    /* adresse, og efterfølgene hvor udtrækket skal */
    /* sættes i, og det står til variablen "retur" */
    /* og derefter om det skal sendes med POST eller GET metode */
    sendt.sendAndLoad("http://christofferb.dk/chat/check_brugere.php?mitNavn="+mitNavn,retur,"POST");
}

/* denne funktion og ovenstående funktion "setUsers" */
/* arbejder sammen om at vise hvilke brugere */
/* der er online og hvor henne de står, */
/* hvad du laver, og sådan*/
checkUser = function() {
    /* tjekker om der er blevet modtaget noget fra */
    /* databasen og hvis det er så gør den hvad */
    /* den er lavet til at gøre nemlig at "fjerne" */
    /* alle andre figurer og derefter kalde */
    /* funktionen "setUsers" der sætte dem ind igen */
    if(retur.antal == 0) {
        _root.chatInterface["figur_"+lastBruger]._visible = false;
    } else {
        for(i=1;i<=retur.antal;i++) {
            if(i == 1) {
                removeMovieClip("figur_"+retur.bruger1);
            } else if(i == 2) {
                removeMovieClip("figur_"+retur.bruger2);
            } else if(i == 3) {
                removeMovieClip("figur_"+retur.bruger3);
            } else if(i == 4) {
                removeMovieClip("figur_"+retur.bruger4);
            } else if(i == 5) {
                removeMovieClip("figur_"+retur.bruger5);
            } else if(i == 6) {
                removeMovieClip("figur_"+retur.bruger6);
            } else if(i == 7) {
                removeMovieClip("figur_"+retur.bruger7);
            }
        }
    }
    /* kalder funktionen setUsers */
    var updateUsers = setInterval(setUsers,2000,"yeah");
}
/* kalder funktionen checkUser omkring hele tiden */
var DoCheckUserAlive = setInterval(checkUser,4000,"yeah");
Avatar billede morano Nybegynder
08. august 2006 - 18:40 #3
****der er 2 steder i koden hvor der er en kommentar "/* hvis modtagelsen fra databasen ikke gik godt */" En kommentar der skulle have været slettet da jeg slettede det kode den hørte til
Avatar billede mat Nybegynder
08. august 2006 - 22:12 #4
Jeg vil skyde på at det er fordi retur.antal er undefined og;

for (i = 1; i <= undefined; i++)

er en uendelig løkke?

(og hvorfor bruger du ikke variablen "i" i din krop i dine løkker, ovenstående skærer umiddelbart lidt i øjnene?)

mvh mat
Avatar billede morano Nybegynder
08. august 2006 - 22:28 #5
Et stykke tid efter jeg posted koden, skrev jeg næsten hele det stykke der på en ny måde hvor jeg tester om retur "findes" og hvis den gør det, så udføre den det, men hvis dne ikke gør, altså er 'undefined' så udføre den ikke. Men det virkede heller ikke...

haha, det fordi jeg ikke kunne få den til at reagere på det, når tallet blev givet af 'i'. Så var det bare undefined, men hvis jeg i stedet for gjorde sådan der virkede det.
Men det er nok bare fordi jeg ikke ved hvordan jeg skulle gøre det:P jeg skrev:

  removeMovieClip("figur_"+retur.bruger+i);

men det virkede ikke:P
Avatar billede mat Nybegynder
08. august 2006 - 22:57 #6
Så problemet opstår stadig?

..og du kan skrive;

removeMovieClip("figur_"+retur["bruger"+i]);

Vil jeg tro..
Avatar billede barklund Nybegynder
09. august 2006 - 09:19 #7
Som jeg har skrevet på actionscript.dk, hvor du også spurgte, så vil jeg anbefale dig at få fat på en "rigtig" chatserver såsom oregano eller andre open source - unity fås også i en community-udgave :)
Avatar billede morano Nybegynder
09. august 2006 - 12:23 #8
yeah, jeg ved det. Jeg ville entil jeg fik sat noget op der kunne kommunikere med php, ikke begynde at finde anden server. Men nu er jeg igang med at søge og finde:)
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