[FLASH] Moving objects with actionscipt (import mx...)

Pagina: 1
Acties:

  • edwinistrator
  • Registratie: December 2000
  • Laatst online: 23-03-2022
Hoe kan je movieclips achter elkaar laten bewegen/infaden? Ik wil de movieclips doormiddel van actionscipt onder controle houden maar nu ik de timeline kwijt ben weet ik niet hoe ik in actionscript de functions moet timen, met SetInterval?

Bijvoorbeeld, ik heb 2 blokjes, ene blokje moet pas gaan bewegen als andere blokje klaar is, of al even begonnen is.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//import transition classes----------------
import mx.transitions.Tween;
import mx.transitions.easing.*;

//control clip1--------------------
function moveclip1(xfinish:Number) {
    var xstart:Number = test_mc1._x;
    var xMove:Tween = new Tween(test_mc1, "_x", Bounce.easeOut, xstart, xfinish, 3, true);
}

//control clip2--------------------
function moveclip2(xfinish:Number) {
    var xstart:Number = test_mc2._x;
    var xMove:Tween = new Tween(test_mc2, "_x", Bounce.easeOut, xstart, xfinish, 3, true);
}

//button function-------------------
test_btn.onPress = function() {
    moveclip1(300, 10);
    moveclip2(10, 300);
};

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 16-01 10:51
Je zit op de goede weg, tween classes is the way to go :).

Mooie pagina over Tween classes: http://www.actionscript.o...es_Documented/index.shtml

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 16-01 10:51
Sorry, heb je vraag niet goed gelezen. Tween class kent events, die zou je bijvoorbeeld zo kunnen gebruiken:

code:
1
2
3
var xstart:Number = test_mc1._x;
var xMove:Tween = new Tween(test_mc1, "_x", Bounce.easeOut, xstart, xfinish, 3, true);
xMove.onMotionFinished = function() { roepNieuweMoveFunctieAan() }


Je kan gewoon meerdere tweens tegelijk starten (bijvoorbeeld voor _x en _alpha).

  • edwinistrator
  • Registratie: December 2000
  • Laatst online: 23-03-2022
Dank, ik was die link al eens tegen gekomen maar "onMotionFinished" heb ik waarschijnlijk overheen gelezen in :S, hier kom ik al een heel eind mee. Maar dit is nog niet echt flexibel.
Als ik de 2e animatie wil starten op de helft van de 1e animatie heb ik gewoon pech? of bestaat er ook "onMotionAllMostFinished" :P

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 16-01 10:51

  • edwinistrator
  • Registratie: December 2000
  • Laatst online: 23-03-2022
"onMotionChanged" kan inderdaad ook, maar een setInterval is toch makkelijker / flexibeler. Stukje code wat het voor mij lekker duidelijk maakt en waar anderen misschien ook wat aan hebben:
(5 movieclipjes op je root met instancenames: blokje_0 t/m blokje_4 )
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import mx.transitions.Tween;
import mx.transitions.easing.*;
timer = setInterval(tweenMe, 100); // 0,1 seconden
currentBlokje = 0;
totalBlokjes = 5;
function tweenMe() {
    var mc:MovieClip = _root['blokje_'+currentBlokje];
    //trace(mc);
    xTween = new Tween(mc, '_x', Bounce.easeOut, mc._x, 300, 1.5, true);
    currentBlokje++;
    if (currentBlokje == totalBlokjes) {
        clearInterval(timer);
    }
    xTween.onMotionFinished = function() {
        if (xTween.obj._name == 'blokje_4') {
            //trace('hihi');
            for (var i = 0; i<5; i++) {
                _root['blokje_'+i]._x = -37;
            }
        }
    }
}

voorbeeld van bovenstaande

[ Voor 10% gewijzigd door edwinistrator op 22-03-2006 00:29 ]

Pagina: 1