Jetzt hab ich das Problem, dass beim rückwärtsanimieren nur bei der ersten Animation alle Loops benutzt werden. Wiederholt sich die Animation (mit Repeat) dann wird nur noch der letzte Loop benutzt. Lässt sich da irgendwas machen?
![Sad :(](/phpbb/images/smilies/icon_sad.gif)
Code: Alles auswählen
int stop_at=-1;
// rep_ex
if (stop_at>0 && rad1.Frame==stop_at) rad1.StopAnimating();
...
stop_at=6;
rad1.Animate(...);
also für 12 aufeinanderfolgende sprites schreib ich dannkhrismuc hat geschrieben:Einen Array anlegen, der die Nummern der Sprites enthält, dann mit Object.Graphic, Wait() und einer while-Schleife selbst animieren.
Code: Alles auswählen
// script header
struct radstruct {
int sprite[50]; // spritenummern
int pos; // position
int zaehne; // anzahl zähne
}
// global script
radstruct rad[5];
function init_raeder() {
int r=1;
int c;
rad[1].zaehne=6; rad[1].pos=1;
rad[2].zaehne=10; rad[2].pos=Random(5)+2;
...
while(r<=4) { // vier Räder
c=1;
while(c<=rad[r].zaehne) {
if (r==1) rad[r].sprite[c]=120+c; // rad 1: sprites 121-126
if (r==2) rad[r].sprite[c]=127+c; // rad 2: sprites 127-136
...
c++;
}
r++;
}
}
function rad_drehen(int r, bool rechts) {
if (rechts) rad[r].pos++;
else rad[r].pos--;
if (rad[r].pos==0) rad[r].pos=rad[r].zaehne;
if (rad[r].pos==rad[r].zaehne+1) rad[r].pos=1;
object[r].Graphic=rad[r].sprite[rad[r].pos]; // rad1=object1, usw.
}
function raeder_drehen() {
rad_drehen(1, true);
rad_drehen(2, false);
rad_drehen(3, true);
rad_drehen(4, false);
}
// gamestart
init_raeder();
Code: Alles auswählen
rad[1].pos=1; // alles auf Lösungsposition
rad[2].pos=1;
rad[3].pos=1;
...
int t=Random(50)+20; // 140-190 Zähne zur Lösung
while(r<=t) {
raeder_drehen();
r++;
}
r=1;