Avatar billede quantix Nybegynder
14. februar 2002 - 09:42 Der er 16 kommentarer og
1 løsning

animation med actionscript

Jeg vil gerne lave en motion af en MC uden at skule bruge frames, det er simpelt nok at flytte MC'en til punkt x med:
on (press) {
    setProperty ("blabla", _x, "250");
}

men hvis den skal bevæge sig rigtigt (som med motion tween) virker det ikke!
Avatar billede lingoman Nybegynder
14. februar 2002 - 09:47 #1
Skal den lave en easeOut bevægelse eller vil du have både ease-In-og-out ?
Avatar billede lingoman Nybegynder
14. februar 2002 - 09:49 #2
2)vil du kun flytte den til _x=250 eller skal den flytte sig 250 pixels ?
3)Hvad med y retning ?
Avatar billede pixelpaw Nybegynder
14. februar 2002 - 10:29 #3
Du skal tænke på at dit object skal bevæge sig fra punkt a til punkt b.
Først skal du regne afstanden ud:
intDistanceX = _x - 250;

Derefter skal du dele afstanden op alt efter hvor hurtigt MC'et skal bevæge sig: (jo flere "steps" jo langsomere går det)
intSteps = 5;
intDistanceMove = intDistanceX / intSteps;

Først nu kan du begynde at bevæge det:
_x += intDistanceMove;

Aly dette vil så se ca. sådan ud på dit MC:
onClipEvent (Load) {
  intDistanceX = _x - 250;
  intSteps = 5;
  intDistanceMove = intDistanceX / intSteps;
}
onClipEvent (enterFrame) {
  if (_root.moveDaShit == true) {
    _x += intDistanceMove;
  }
}

og på din knap:
on(press) {
  _root.moveDaShit = true;
}
on(release) {
  _root.moveDaShit = false;
}

Så vil dit MC bevæge sig når du holder knappen inde.
Avatar billede lingoman Nybegynder
14. februar 2002 - 11:08 #4
Nå, så vil jeg gå ud fra at du kun vil flytte din MC ved konstant hastighed.

sæt denne action på din MC som skal flytte sig
Du skal huske at navngive dit MC i 'Instance Panel', (navnet i Library spiller ingen rolle her)
Jeg antager at du kalder MC'et for "ditMC_instance_navn", men du skal naturligvis tilpasse actionen så det stemmer med dit MCs navn

onClipEvent(load) {
  function beginMove(hvorMeget,hvorMangeTrin) {
    speed = hvorMeget/hvorMangeTrin;
    target_x = _x + hvormeget;
    steps = hvorMangeTrin;
    moveMC = true;
  }
}


onClipEvent(enterFrame) {
  if (moveMC == true) {
    if (steps > 0) {
            _x+= speed;
            steps--;
    } else {
            _x = target_x;
            moveMC = false;
    }
  }
}

På din knap som skal aktivere bevægelsen skal du have

on (press) {
  _root["ditMC_instance_navn"].beginMove(250,10)
}

Her har jeg sagt at den skal bevæge sig 250 pixels i 10 trin. Disse parameter kan du tilpasse til dit eget behov.

mvh geo
Avatar billede quantix Nybegynder
14. februar 2002 - 11:26 #5
Tak lingoman det virker! med der er et eller andet galt med forumet her for jeg kan ikke gi dig point!
va er der galt?
Avatar billede quantix Nybegynder
14. februar 2002 - 11:29 #6
har prøvet log ud og log ind igen men men men...

jeg skylder dig nogen point!
Avatar billede lingoman Nybegynder
14. februar 2002 - 11:33 #7
Jeg vil nu gerne dele dem med Paw så vent lige med at acceptere indtil han også ligger et svar :)
Her er mit svarfelt
mvh geo
Avatar billede quantix Nybegynder
14. februar 2002 - 11:39 #8
men hvis nu MC'en ikke skal have et relativt nul punkt, dvs. hvis jeg har to knapper den ene siger MC skal gå til x=250 og den anden siger MC skal gå til x=100, så skulle MC'en gerne gå frem og tilbage mellem punkt 250 og 100.
Lige nu gå den bare videre i en retning og addere 250 og 100 osv. osv.
Avatar billede lingoman Nybegynder
14. februar 2002 - 11:56 #9
du kan lave to knapper. Én til at gå 250 i den ene retning,
den anden til at gå 250 i den anden retning.

Du skal så bare bruge -250 i stedet for 250
//gå forlæns
on (press) {
      _root["ditMC_instance_navn"].beginMove(250,10)
}
//gå baglæns
on (press) {
      _root["ditMC_instance_navn"].beginMove(-250,10)
}
Avatar billede quantix Nybegynder
14. februar 2002 - 12:57 #10
ja det har jeg også prøvet, men hvis jeg har f.eks. 5 knapper, så er det det ikke optimalt.
jeg tror faktisk ikke det jeg vil lave kan gøres på denne måde, det er nok bedere at gøre det med noget mouse follow.
men tak anyway!
Avatar billede lingoman Nybegynder
14. februar 2002 - 12:59 #11
Prøv at precisere det du vil have. Jeg er ganske sikker på at en lille ændring i actionen kan klare det
Avatar billede lingoman Nybegynder
14. februar 2002 - 13:05 #12
Er det fordi du gerne vil være i stand til at specificere et slut koordinat i stedet for relativ afstand den skal flytte ?
Avatar billede quantix Nybegynder
14. februar 2002 - 15:28 #13
ja faktisk!
Avatar billede lingoman Nybegynder
14. februar 2002 - 15:30 #14
np ;) jeg modificerer den lige...
Avatar billede lingoman Nybegynder
14. februar 2002 - 15:40 #15
onClipEvent(load) {
          function beginMove(hvorhen,hvorMangeTrin) {
                speed = (hvorhen - _x)/hvorMangeTrin;
                target_x = hvorhen;
                steps = hvorMangeTrin;
                moveMC = true;
          }
}


onClipEvent(enterFrame) {
      if (moveMC == true) {
            if (steps > 0) {
                _x+= speed;
                steps--;
            } else {
                _x = target_x;
                moveMC = false;
            }
      }
}

På dine knapper som skal aktivere bevægelsen skal du have

on (press) {
    _root["ditMC_instance_navn"].beginMove(250,10)
}

nu er det første tal destinationen!
det andet tal er stadig antal trin bevægelsen skal fordeles over.

mvh geo
Avatar billede quantix Nybegynder
15. februar 2002 - 11:54 #16
thanx lingoman!
Avatar billede lingoman Nybegynder
15. februar 2002 - 11:56 #17
velbekommen :)
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