Avatar billede camban Nybegynder
12. marts 2005 - 23:41 Der er 13 kommentarer og
1 løsning

? om onEnterFrame og noget if else if

2 små spørgsmål:

Jeg tester for hit med en onEnterframe og har her en optælling af scoren men da dette også kører på onEnterframe bliver det ikke kun 1 point pr. hittet objekt men pr.- frame. Hvordan kan jeg komme udenom det.

Det andet er ang. en if sætning efterfulgt af en else if. Jeg tester for hit i begge og men hvordan kan jeg få den til ignorer den anden hitTest hvis hitTest 1 er true?

Håber der er hjælp at hente...
Avatar billede nikolajdu Nybegynder
12. marts 2005 - 23:51 #1
var isHit = false;
var score = 0;

movieclipNavn.onEnterFrame = function(){
if(this.hitTest(andetObjekt)) && !isHit){
isHit = true;
score += 1;
}
}

sådan?
Avatar billede camban Nybegynder
13. marts 2005 - 11:07 #2
Det virker godt..altså den tæller kun 1 op men registrer kun en hitTest første gang det sker og ignorer alt derefter??
Avatar billede barklund Nybegynder
13. marts 2005 - 14:25 #3
Tror vi har bedre chancer for at hjælpe, hvis vi må se dit script ;)
Avatar billede camban Nybegynder
13. marts 2005 - 16:51 #4
isHit = false;
lives = 3;
score = 0;
SH = 0;
pancake_Depth = 500;
total_pancakes = 3;

set_pancakes = function () {
    for (j=0; j<total_pancakes; ++j) {container = _root.attachMovie("pancake", "pancake"+j, pancake_Depth+j);
    container.reset = reset_pancakes;container.reset();}};

reset_pancakes = function () {
    this._y = SH+random(SH);
    this._x = random(500)+20;
    this.yspeed = -(random(3)+2);
    this.onEnterFrame = move_pancakes;
    this.gotoAndStop(1);
    this._visible = 1;
    };

move_pancakes = function () {
this._y -= this.yspeed;
if (this._y>=500) {this.reset();}
};

set_pancakes();

_root.onEnterFrame = function(){
    if (lives = 0){
        this.gotoAndStop(2);
}};   

_root.onEnterFrame = function(){
    for (var i = 0; i < total_pancakes; i++) {
        if (rasmusklump.haand_mc.hitTest(this["pancake"+i])&& !isHit) {
            trace("hånd rammer pandekage nummer "+i);
            this["pancake"+i].gotoAndPlay(5);
            _root.Sound_hit1.start();
            isHit = true
            score +=1;

        } else if(ground.hitTest(this["pancake"+i])) {
            this["pancake"+i].gotoAndPlay(2);
            _root.lives -= 1;

        }
    }
};

stop();
Avatar billede barklund Nybegynder
13. marts 2005 - 16:56 #5
Jeg er ikke helt med på, hvad der skal ske og hvad der sker som ikke skal ske. Prøv at forklare det igen ;)
Avatar billede camban Nybegynder
13. marts 2005 - 21:01 #6
Altså når rasmusklump.haand_mc rører pancake skal den give et point og før jeg satte isHit = true ind talte den ikke kun 1 gang op men for hver frame de rørte hinanden. Efter jeg har puttet isHit ind tæller den godt nok kun 1 gang pr. hitTest men den gør det også kun aller første gang og ignorer fuldstændig efterfølgende hit ml. rasmusklump og pancake??
Jeg vil jo gerne have at den hitTest løbende altså bruge onEnterframe men scoren skal kun tælle op første gang (frame) de berøre hinanden.
Avatar billede barklund Nybegynder
13. marts 2005 - 21:52 #7
Du skal jo bare for det enkelte objekt huske, om du har rørt dette før. Altså noget med

_root.onEnterFrame = function(){
    for (var i = 0; i < total_pancakes; i++) {
        if (this["pancake"+i].ramt) continue;
        if (rasmusklump.haand_mc.hitTest(this["pancake"+i])) {
            this["pancake"+i].ramt = true;
            this["pancake"+i].gotoAndPlay(5);
            _root.Sound_hit1.start();
            score +=1;
        } else if(ground.hitTest(this["pancake"+i])) {
            this["pancake"+i].gotoAndPlay(2);
            _root.lives -= 1;

        }
    }
};

Noget i den stil.

--
Morten Barklund
Avatar billede camban Nybegynder
13. marts 2005 - 23:22 #8
Det stopper med at virke når den har talt op til de 3 pancake movieclips jeg har på scenen af gangen. Mine pancakes hedder hele tiden 0,1 eller 2 og når lopp'en er gennemløbet virker det ikke mere?
Avatar billede barklund Nybegynder
13. marts 2005 - 23:28 #9
Altså, jeg kan jo ikke helt gætte mig til, hvordan det hænger sammen. Altså, man kan ramme movieclippene, men når man flytter "hånden" igen, så kan man ramme dem én gang til bagefter?

Jeg ved jo kun, præcis hvad du fortæller - ikke mere :)
Avatar billede camban Nybegynder
13. marts 2005 - 23:36 #10
Det er nok fordi jeg ikke selv har helt tjek på sagerne...sorry

Man kan ramme movieclippene (så og sige fange en pandekage) og så går jeg til en frame der kort fortæller at man har fået et point. Det skal jo så virke som om det er nye pandekager der kommer ned fra loftet men da jeg kun bruge op til de 3 samme pancake-movieclip igen og igen skal jeg på en eller anden måse (går jeg ud fra resette i min pancake-movieclip..er den rigtig forstået. At den skal glemme at fra tidligere?
Avatar billede camban Nybegynder
13. marts 2005 - 23:36 #11
at = alt
Avatar billede barklund Nybegynder
13. marts 2005 - 23:40 #12
Og efter animationen i frame 2 kalder den reset?

Jamen, så sæt egenskaben "ramt" til false i reset-funktionen. Ganske simpelt.
Avatar billede camban Nybegynder
13. marts 2005 - 23:46 #13
Cool det virker...nu kan jeg sove roligt uden at drømme om flyvende pandekager.
Svar og der vanker point :o)
Avatar billede barklund Nybegynder
13. marts 2005 - 23:58 #14
Yesh yesh :)
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