Avatar billede camban Nybegynder
15. marts 2005 - 14:42 Der er 8 kommentarer og
1 løsning

hitTest skal kun virker en gang

Hejsa

Hittesten virker fint men den skal kun virke en gang så this efterfølgende kan move igen?

onClipEvent (enterFrame) {
this.ramt =false;

if (this.ramt) continue;
if(this.hitTest(_parent.wall1)){
    moveSpeed=0;
    this.ramt = true;}

this.ramt er noget jeg har brugt et andet sted som virker der, men ikke her?

Et andet spørgsmål er ang. at fjerne Attached Movieclips (container), jeg har forsøgt med removeMovieClip men uden held, er der nogen der har en ide om hvad der kan være galt.
Avatar billede barklund Nybegynder
15. marts 2005 - 14:45 #1
Du starter jo med at sætte this.ramt til at være false - hvilket sker hver gang dit script kører. Derudover er vi ikke så meget for onClipEvent - flyt det ud til at framescript et andet sted - så har du også bedre styr på det.

Mht. attachMovieClip så fjernes du dem netop igen ved at bruge removeMovieClip - kom med lidt kontekst, så kigger vi på det :)
Avatar billede camban Nybegynder
15. marts 2005 - 15:00 #2
Har flyttet det ud nu

Jeg har sat figur.ramt = false; i starten og har ændret sp det passer men det virker fortsat ikke?

if (figur.ramt) continue;
if(this.figur.hitTest(this.wall1)){
    moveSpeed=0;
    figur.ramt = true;}
Avatar billede barklund Nybegynder
15. marts 2005 - 15:05 #3
Nu har du jo ikke en onEnterFrame?

figur.ramt = false;
figur.onEnterFrame = function() {
    if (this.ramt) return;
    if (this.hitTest(wall1)){
        this.moveSpeed = 0;
        this.ramt = true;
    }
}

Men jeg er stadig ikke 100 på, at jeg helt forstår hvordan alle tingene hænger sammen i din fil - men prøv om ikke det giver noget.
Avatar billede camban Nybegynder
15. marts 2005 - 15:11 #4
Jeg havde ikke taget den med, men den var placeret indenfor en onEnterFrame funktion
Når jeg bruge return istedet for continue står den og flipper mellem de 4 fire frames jeg har i min figur (i min figur ligger der et movieclip(med flere frames) pr. frame, ved ikke om det har nogen betydning)?
Avatar billede barklund Nybegynder
15. marts 2005 - 15:15 #5
Ja, hvis du ikke stopper den i en af de 4 frames, så kører den bare imellem dem.

Som sagt, jeg aner ikke hvad du har lavet - jeg kan kun gætte mig frem fra de sparsomme informationer, du af og til lader slippe igennem jerntæppet ;)
Avatar billede camban Nybegynder
15. marts 2005 - 15:22 #6
Ja det kan jeg godt se, jeg kan sende .fla til dig hvis det er?
Avatar billede barklund Nybegynder
15. marts 2005 - 16:08 #7
Tja, det er jo ikke mig, der skal have det løst - du kan ikke forklare dig ud af det og smide alt dit script herind?
Avatar billede camban Nybegynder
15. marts 2005 - 22:56 #8
Jeg forsøger at forklare det...figur må ikke kunne gå igennem wall derfor hitTest og moveSpeed = 0. Figuren er styret af key-press og når jeg prøver at styre væk fra wall "hænger" figuren nærmest fast til wall, sikkert fordi den tjekker onEnterframe. Jeg har prøvet med figur.ramt og meget andet?
Har sat stjerner ved problemet.

lives = 3;
score = 0;
SH = 0;
object_Depth = 500;
total_objects = 3;


timer.gameStartTime = getTimer();
timer.gameDuration = 60000;
timer.gameTimerStarted = false;
timer.display = 60;
timer.onEnterFrame = function(){
    gameTimeLeft = this.gameDuration -(getTimer() - this.gameStartTime);
    if(gameTimeLeft <=0){
        //OUT OF TIME
        timer.display = 0;
        _root.timer.onEnterFrame = null;
        _root.figur.onEnterFrame = null;
        _root.removeMovieClip(["object"+i]);
        _root.gotoAndPlay("game_over");
    }else{
        secondsleft = Math.ceil(gameTimeLeft/1000);
        timer.display = secondsleft
    }
};

set_objects = function () {
    for (j=0; j<total_objects; ++j) {container = _root.attachMovie("object", "object"+j, object_Depth+j);
    container.reset = reset_objects;container.reset();}};

reset_objects = function () {
    this._y = SH+random(SH);
    this._x = random(500)+50;
    this.yspeed = -(random(3)+1);
    this.onEnterFrame = move_objects;
    this.gotoAndStop(1);
    this._visible = 1;
    this.ramt = false;
    };

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


set_objects();

take_life = function (){
    lives -=1;
    };
   
get_lives = function (){
    return (lives);
    };   

figur.ramt = false;
figur.onEnterFrame = function(){
if (Key.isDown(Key.RIGHT)) {
            this.gotoAndPlay(2);
            this._x+=moveSpeed;
} else if (Key.isDown(Key.LEFT)) {
            this.gotoAndPlay(3);
            this._x-=moveSpeed;
       
        } else {
        this.gotoAndStop(1);
}   
   
    *** Har prøvet med this.ramt men uden held***

    if (this.ramt) return;
    if (this.hitTest(wall1)) {
        this.moveSpeed=0;
        this.ramt = true;
        }
       
    if (this.hitTest(wall2)) {
    this.moveSpeed=0;}
        };

_root.onEnterFrame = function(){
        if (lives == 0){
        _root.gotoAndStop("game_over");
}
               
    for (var i = 0; i < total_objects; i++) {
        if (this["object"+i].ramt) continue;
        if (figur.haand_mc.hitTest(this["object"+i])) {
            this["object"+i].gotoAndPlay(5);
            this["object"+i].ramt = true;
            _root.Sound_hit1.start();
            _root.score +=1;
            this.stak.nextFrame();


        } else if(ground.hitTest(this["object"+i])) {
            this["object"+i].gotoAndPlay(2);
            this["object"+i].ramt = true;
            take_life();
        }
    }
};


       
stop();
Avatar billede camban Nybegynder
17. marts 2005 - 16:48 #9
Lukker
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