Toon posts:

[flash] puntje laten bewegen mbv action script

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik ben nog een action script n00b en ik wil dus een balletje met behulp van actionscript op en neer laten bewegen ...

nu heb ik twee layers
1) vier frames met daarin actions
2) het bolletje (vier frames)

in de eerste layer heb ik dus vier frames met daarin de volgende scripts ...
1)
code:
1
2
3
4
5
6
if (bolletje._x != 445) {
    setProperty("bolletje", _x, bolletje._x+1);
    gotoAndPlay(2);
} else {
    gotoAndPlay(3);
}

2)
code:
1
gotoAndPlay(1);

3)
code:
1
2
3
4
5
6
if (bolletje._x != 45) {
    setProperty("bolletje", _x, bolletje._x-1);
    gotoAndPlay(4);
} else if {
    gotoAndPlay(1);
}

4)
code:
1
gotoAndPlay(3);

ik wil dat hij beweegt over de afstand tussen x=45 en x=445
maar nu staat ie direct op x=445 (terwijl hij op x=45 moet beginnen) en hij beweegt ook niet :'(

een id hoe het komt ?

Verwijderd

code:
1
2
3
4
5
6
if (bolletje._x <= 445) {
    setProperty("bolletje", _x, bolletje._x+1);
    gotoAndPlay(2);
} else {
    gotoAndPlay(3);
}

En in frame 3 niet else if maar else gebruiken.

Verwijderd

Zou het trouwes zo ie zo niet zo doen, doe dan gewoon clipevent aan het bolletje ofzow, dus niet met 4 frames werken, maar een clipevent schrijven.

Verwijderd

Topicstarter
mhm, clipevent ...

ik heb wat zitten kloten, en een loop lijkt me op zich ook wel handig, en zoniet dan heb ik er altijd iets van geleerd :)
code:
1
2
3
4
5
onClipEvent (load) {
    do {
      setProperty("bol", _x, bol._x + 10);
    } while (bol._x != 100);
}

deze heeft betrekking op de instance bol
maar als ik dit doe dan crashed heel mijn flash ...

ik heb als begin waarde x = 0
dus volgens mij zou hij toch gewoon 10 stappen moeten uitvoeren of zie ik dit verkeerd ?

Verwijderd

Als je dat do while script gebruikt krijg je een infinitive loop. Je zou zoiezo geen tween zien omdat hij de while loop uit zou blijven uitvoeren totdat het balletje op 100 staat en dan pas weer aan de volgende loop beginnen.

Wat je zou kunnen doen is dit als code aan het balletje hangen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
// wel enterframe gebruiken anders voert hij het
// script alleen uit bij het laden van je mc
onClipEvent (enterFrame) {
if (x<=100) {
      //zolang x kleiner is dan 100 x+5
        x += 5;
} else {
      // anders dus niet +5
}
      // _x van dit dus x maken
_x=x;
}

Voor je eerste puntje:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
onClipEvent(enterFrame){
      if (x>=445) {
      // als x groter is dan 445 snelheid vx omdraaien
        vx=-vx;
        x=445;
      }else if (x<=45){
      // als x kleiner is dan 45 snelheid vx omdraaien
        vx=0-vx;
        x=45;
      } else {
      // anders gewoon niets aan vx doen
      }
      // positie geven aan balletje
      x+=vx;
      _x=x;
}

Hoop dat het zo een beetje helpt, anders gewoon nog even dooroefenen :)...

Verwijderd

Topicstarter
ik weet niet of je dit zelf in een fla gezet hebt ...
zo ja zou je die dan willen mailen naar sjra@cart.nl ?
ik kom er nu namelijk niet uit welke van de twee scripts ik waar moet plaatsen :'(
Pagina: 1