Avatar billede num256 Nybegynder
16. juli 2003 - 15:57 Der er 3 kommentarer

Shooter spil pointtæller / loadmovie problemer

Hej alle sammen jeg har problemer med en lille shooter som jeg er igang med at lave.
Det er sådan at pointælleren virker første gang jeg spiller shooteren, indtil jeg spiller shooteren igen, ser det ud til at den bliver en højere end den skal.  Det vil sige:
første gang rigtigt. 1+1
anden gang 2+2
tredje gang 3+3 og så videre.

Jeg loader shooteren ind i level1 fordi jeg skal til at gemme en variable som siger til om hvilken karakter er valgt.  som jeg gør med _global.variable
Det ser ud til at problemet ligger i hvilken variabler den tager med når spillet bliver loadet ind igen.  Jeg kan simphelthen ikke gennemskue problemet.
Her får i scriptet som ligger på første frame
//
fscommand("allowscale", "true");
fscommand("fullscreen", "true");
stop();
score_final = 0;
_root.onEnterFrame = function() {
    pointteller = (score_final)+7;
    _root.point.gotoandstop(pointteller);
    //
    if (_root.listen) {
        Mouse.addListener(someListener);
    }
    if (!_root.listen) {
        Mouse.removeListener(someListener);
    }
    //
};
_root.onLoad = function() {
    _root.listen = true;
    forsteGang = true;
    _root.hjerte.timer_mark.pause_time_final = "1.5";
};
// score_final sektionen
someListener = new Object();
someListener.onMouseup = function() {
    if (_root.hjerte.hittest(_root._xmouse, _root._ymouse, true)) {
        //key(65) = A
        if (Key.isDown(65)) {
            if (_root.mal == "circkle") {
                score_final = score_final+1;
                _root.hjerte.gotoandplay("hit");
                if (score_final<0) {
                    _root.finn.gotoAndPlay("positiv1");
                }
                if (score_final>0) {
                    labelen = "positiv"+[score_final];
                    _root.finn.gotoAndPlay([labelen]);
                }
            }
            if (_root.mal == "kasse") {
                score_final = score_final+1;
                if (score_final<0) {
                    omvende = -(score_final);
                    labelen = "negativ"+[omvende];
                    _root.finn.gotoAndPlay([labelen]);
                }
                if (score_final>0) {
                    _root.finn.gotoAndPlay("negativ1");
                }
            }
            if (_root.mal == "no_touch") {
                score_final = score_final-1;
                if (score_final<0) {
                    omvende = -(score_final);
                    labelen = "negativ"+[omvende];
                    _root.finn.gotoAndPlay([labelen]);
                }
                if (score_final>0) {
                    _root.finn.gotoAndPlay("negativ1");
                }
            }
        }
        //key(71) = G
        if (Key.isDown(71)) {
            if (_root.mal == "kasse") {
                score_final = score_final+1;
                _root.hjerte.gotoandplay("hit2");
                if (score_final<0) {
                    _root.finn.gotoAndPlay("positiv1");
                }
                if (score_final>0) {
                    labelen = "positiv"+[score_final];
                    _root["mc_thumb"+iii]._visible = true;
                    _root.finn.gotoAndPlay([labelen]);
                }
            }
            if (_root.mal == "circkle") {
                score_final = score_final-1;
                if (score_final<0) {
                    omvende = -(score_final);
                    labelen = "negativ"+[omvende];
                    _root.finn.gotoAndPlay([labelen]);
                }
                if (score_final>0) {
                    labelen = "positiv"+[score_final];
                    _root["mc_thumb"+iii]._visible = true;
                    _root.finn.gotoAndPlay([labelen]);
                }
            }
            if (_root.mal == "no_touch") {
                score_final = score_final-1;
                if (score_final<0) {
                    omvende = -(score_final);
                    labelen = "negativ"+[omvende];
                    _root.finn.gotoAndPlay([labelen]);
                }
                if (score_final>0) {
                    labelen = "positiv"+[score_final];
                    _root["mc_thumb"+iii]._visible = true;
                    _root.finn.gotoAndPlay([labelen]);
                }
            }
        }
    } else {
        score_final = score_final-1;
        if (score_final<0) {
            omvende = -(score_final);
            labelen = "negativ"+[omvende];
            _root.finn.gotoAndPlay([labelen]);
        }
        if (score_final>0) {
            _root.finn.gotoAndPlay("negativ1");
        }
    }
    if (score_final == 6) {
        _root.gotoAndPlay("vundet");
        //    _root.hjerte.timer_mark.pause_time_final = "5";
    }
    if (score_final>0) {
        _root.hjerte.timer_mark.pause_time_final = "1.5";
    }
    if (score_final == -6) {
        _root.gotoAndStop("tabt");
    }
};
keyListener = new Object();
keyListener.onKeyDown = function() {
    if (Key.isDown(65)) {
        _root.tracker.gotoandstop(2);
    }
    if (Key.isDown(71)) {
        _root.tracker.gotoandstop(3);
    }
};
keyListener.onKeyUp = function() {
    _root.tracker.gotoandstop(1);
};
Key.addListener(keyListener);
//

Tak på forhånd
Avatar billede mat Nybegynder
16. juli 2003 - 17:45 #1
Ovenstående er fra den swf, der loades ind i _level1?

Hvis du loader dit spil ind i flere omgange og din pointtæller ændrer opførsel, alt efter hvor mange spil man har spillet tyder det jo på at der ligger en variabel og roder rundt i _level0 eller _root, som IKKE bliver nulstillet ved nyt spils begyndelse? eller ude i global, hvad ved jeg?

Alt hvad der står i din _level1 swf bliver jo overskrevet når du loader den ind igen, så problemet må ligge andetsteds (medmindre du ændrer på _level0 eller global placerede variabler fra din eksterne swf)

prøv at smide en række traces på dine variabler rundt omkring (især dem som tilsyneladende bliver påvirket af flere loads, og dem som påvirker dem), så burde du kunne opdage hvor det går galt.

mvh mat
Avatar billede num256 Nybegynder
19. juli 2003 - 00:47 #2
Ju det er scriptet som ligger på første frame i spillet som bliver loadet ind på _level1.  Jeg prøver at smide mange traces ind i morgen og finde den fejl. 
Tak for tips.
Avatar billede num256 Nybegynder
21. juli 2003 - 10:35 #3
Jeg tror jeg har fundet løsningen, den ligger ikke i problemer med loadmovie, men i listener objectet.
Det skal fjernes før jeg spiller filmen igen.  Tak ellers for jeres interrase
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