Hi,
ich möchte kleine süsse MCs an einer schiefen Linie entlangfahren lassen.
D.h. die MCs bewegen sich pro Frame ca. 4 Pixel in y-Richtung und 1 Pixel in x-Richtung. Exakt ist ein Verhältnis von 22/87.
Schön, nur ist die Bewegung noch beschleunigt. D.h. mal sind es nur 0.24 Pixel in x-Richtung, dann 0.8 usw.
Das Resultat ist das die Bewegung zittert, da es nicht genau auf ein Pixel passt.
Runden wäre eine Alternative, aber dadurch zittert die Animation auch, denn dann springt der MC immer um ein Pixel in x-Richtung, dann gehts weiter mit 4 Pixel nur in y-Richtung.
Hier der Code:
Die trace-Anweisungen ergeben den output (damit man sich ein Bild machen kann):
y dist 1
x dist 0
y dist 1
x dist 0
y dist 2
x dist 0
y dist 2
x dist 1
y dist 3
x dist 1
y dist 3
x dist 1
y dist 4
x dist 1
y dist 4
x dist 1
y dist 4
x dist 1
y dist 5
x dist 1
y dist 5
x dist 1
y dist 6
x dist 1
y dist 6
x dist 2
y dist 7
x dist 2
y dist 7
x dist 2
y dist 8
x dist 2
y dist 8
x dist 2
y dist 9
x dist 2
y dist 9
x dist 2
y dist 10
x dist 2
y dist 10
x dist 3
usw.
Also weder mit, noch ohne die Math.round () -Anweisung ist das Ergebnis zufriedenstellend.
Gibt es noch eine andere Möglichkeit das zu realisieren? Oder ist es technisch einfach nicht möglich?
Danke.
Hier noch die swf:
http://www.woosofa.de/slide_test.html
ich möchte kleine süsse MCs an einer schiefen Linie entlangfahren lassen.
D.h. die MCs bewegen sich pro Frame ca. 4 Pixel in y-Richtung und 1 Pixel in x-Richtung. Exakt ist ein Verhältnis von 22/87.
Schön, nur ist die Bewegung noch beschleunigt. D.h. mal sind es nur 0.24 Pixel in x-Richtung, dann 0.8 usw.
Das Resultat ist das die Bewegung zittert, da es nicht genau auf ein Pixel passt.
Runden wäre eine Alternative, aber dadurch zittert die Animation auch, denn dann springt der MC immer um ein Pixel in x-Richtung, dann gehts weiter mit 4 Pixel nur in y-Richtung.
Hier der Code:
PHP:
on(rollOver) {
this.onEnterFrame = function () {
spd = 1;
z++;
var konst = 22/87;
var dspd = Math.pow(Math.abs(z), 1.1);
spd += (dspd-spd)/3;
kl._y += Math.round(spd);
kl._x -= Math.round(spd*konst);
trace("y dist "+Math.round(spd));
trace("x dist "+Math.round(spd*konst));
} }
y dist 1
x dist 0
y dist 1
x dist 0
y dist 2
x dist 0
y dist 2
x dist 1
y dist 3
x dist 1
y dist 3
x dist 1
y dist 4
x dist 1
y dist 4
x dist 1
y dist 4
x dist 1
y dist 5
x dist 1
y dist 5
x dist 1
y dist 6
x dist 1
y dist 6
x dist 2
y dist 7
x dist 2
y dist 7
x dist 2
y dist 8
x dist 2
y dist 8
x dist 2
y dist 9
x dist 2
y dist 9
x dist 2
y dist 10
x dist 2
y dist 10
x dist 3
usw.
Also weder mit, noch ohne die Math.round () -Anweisung ist das Ergebnis zufriedenstellend.
Gibt es noch eine andere Möglichkeit das zu realisieren? Oder ist es technisch einfach nicht möglich?
Danke.
Hier noch die swf:
http://www.woosofa.de/slide_test.html
Zuletzt bearbeitet: