Avatar billede sunstream Nybegynder
19. august 2003 - 14:23 Der er 4 kommentarer og
1 løsning

onEnterFrameRemoval och objektproblem

Hej !!

Jag har ett litet problem som jag hoppas det är någon som kan hjälpa mig med :o)

Sitter å bygger ett litet spel och försöker samtidigt få styr på det här med objekter och allt vad det heter... jag har följande script:

//-------------------------------------
var speed = 3.5;

duplicateMovieClip("ball_orig", "ball_mc", 5);
_root["ball_mc"]._x = 250;
_root["ball_mc"]._y = 200;



triggerMotion = function () {
    targetX = _xmouse;
    targetY = _ymouse;
    this.onEnterFrame = this.move;
};

ball_mc.move = function() {
    trace("..........");
    this._x += (targetX-this._x)/speed;
    this._y += (targetY-this._y)/speed;
    if ((this._x >= (targetX - 1) && this._x <= (targetX + 1)) && (this._y >= (targetY -1) && this._y <= (targetY + 1))) {
        trace("slut på enterFrame");
        delete this.onEnterFrame
    }
};

ball_mc.onMouseDown = triggerMotion;
//-------------------------------------

som bara startar och stoppar en enterFramerörelse...för jag vill försöka göra det så att det inte ligger onödiga onEnterFramescript överallt och tuggar processorkraft...

MEN ! jag kan inte få det att fungera utan att använda onMouseDown (ball_mc.onMouseDown = triggerMotion) eller andra kommandon med musen...jag skulle väldigt gärna vilja styra det med hjälp av piltasterne...

nån som kan hjälpa stackars mig ?! :o)

tacktack !
Avatar billede mat Nybegynder
19. august 2003 - 14:33 #1
Noget i denne stil måske?

obj = new Object();
obj.onKeyDown = function() {
    if (Key.isDown(Key.LEFT)) {
        triggerMotion();
    }
}
Key.addListener(obj);

Men jeg ved ikke om listeners er mere "økonomiske" end enterFrames?

mvh mat
Avatar billede sunstream Nybegynder
19. august 2003 - 16:09 #2
Problemet är bara att när jag kallar på triggerMotion, så SKALL den kallas på det sätt som det står i ovanstående kod...alltså

"ball_mc.onMouseDown = triggerMotion"

Om jag kallar på triggerMotion med parenteser ( triggerMotion();)...alltså som du föreslår så fungerar det inte...den ignorerar det bara...

Jag vet inte om det är därför att det inte är en funktion utan någon slags method lr noet :oP
Avatar billede mat Nybegynder
19. august 2003 - 16:27 #3
Jeg ville nok gøre noget i denne stil, men om det er bedre ved jeg ikke:

(bemærk jeg har sakset din kopiering ud)

function move(mc) {
    var speed = 3.5;
    targetX = _root._xmouse;
    targetY = _root._ymouse;
    //trace("..........");
    mc.onEnterFrame = function() {
    this._x += (targetX-this._x)/speed;
    this._y += (targetY-this._y)/speed;
    if ((this._x >= (targetX - 1) && this._x <= (targetX + 1)) && (this._y >= (targetY -1) && this._y <= (targetY + 1))) {
        trace("slut på enterFrame");
        delete this.onEnterFrame
    }
    }
};

obj = new Object();
obj.onKeyDown = function() {
    if (Key.isDown(Key.LEFT)) {
        move(ball_mc);
    }
}
Key.addListener(obj);


Håber du kan bruge det til noget?

mvh mat
Avatar billede sunstream Nybegynder
19. august 2003 - 16:51 #4
Wooohooo !! det fungerar finotinto dOOd :o) tacktack....ge mej ett svar så ska'ru få lite points :o)
Avatar billede mat Nybegynder
19. august 2003 - 16:53 #5
:)
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