AGS 2.71 Möchte mehrere Objekte nacheinander abspielen

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
steven
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 64
Registriert: 26.01.2006, 23:32
Wohnort: Schweiz

AGS 2.71 Möchte mehrere Objekte nacheinander abspielen

Beitrag von steven »

Hallo Zusammen,
Wieder suche ich hier im Kreise fähigerer Programmierer um Erläuchtung:
Ich möchte bei einem Objekt verschiedene Animationen nacheinander abspielen ohne 'Play Next Loop after' bei den Views zu verwenden. Am Schluss soll wieder bei der ersten Animation begonnen werden.

So ungefähr sollte es aussehen:

Repeatedly execute:
if (z==0) {
object[2].SetView(2,0);
object[2].Animate(0,6,eOnce,eNoBlock,eForwards);
z=1;

if (z==1) {
object[2].SetView(2,0);
object[2].Animate(0,6,eOnce,eNoBlock,eForwards);
z=2;

etc...

if (z==5) {
z=0;
}

Da das Programm wegen eNoBlock gleich zur letzten Animation springt habe ich dann noch folgendes versucht:

if (z==0) {
object[2].SetView(2,0);
object[2].Animate(0,6,eOnce,eNoBlock,eForwards);
while (object[2].Animating) z=0;
z=1;

Das hat das Programm auch nicht geschluckt. Was mach ich falsch? :cry:
Hab's auch mit Timer versucht, doch dann muss ich bei den unterschiedlich langen Loops immer wieder die Zeit berechnen was sicher nicht die Lösung sein muss.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: AGS 2.71 Möchte mehrere Objekte nacheinander abspielen

Beitrag von KhrisMUC »

Code: Alles auswählen

  if (!object[2].Animating) {
    if (z == 0) {
      ...
      z = 1;
    }
    else if (z == 1) {
      ...
      z = 2;
    }
    else if ...
      ...
    }
    ...
  }
Vor allem ist es hier wichtig, else if zu verwenden, da sonst alle ifs wahr sind.
Use gopher repellent on funny little man
Benutzeravatar
steven
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 64
Registriert: 26.01.2006, 23:32
Wohnort: Schweiz

Re: AGS 2.71 Möchte mehrere Objekte nacheinander abspielen

Beitrag von steven »

Hallo KhrisMUC,

Wieder mal wusste ich, dass Du es sein wirst. =D>

Ich habs nun zum Schluss ohne [b]else[/b] hingekriegt, wichtig dabei ist allerdings, dass ich bei den folgenden Abfragen mit dem höchsten Wert für z anfange. Das mit dem NOT-Operator vor dem object[2].Animating, darauf, wäre ich nicht selbst gekommen!

if (!object[2].Animating) {

if (z==3) {
z=0; // Zyklus fängt von vorne an
}

if (z==2) {
object[2].SetView(4,9);
object[2].Animate(9,6,eOnce,eNoBlock,eForwards);
z=3;
}

if (z==1) {
object[2].SetView(4,5);
object[2].Animate(5,6,eOnce,eNoBlock,eForwards);
z=2;
}

if (z==0) {
object[2].SetView(4,6);
object[2].Animate(6,6,eOnce,eNoBlock,eForwards);
z=1;
}
}

Gruss

Steven
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: AGS 2.71 Möchte mehrere Objekte nacheinander abspielen

Beitrag von KhrisMUC »

Genau, umdrehen geht auch. Ist allerdings nicht sauber ;)
Man sollte Code immer so verfassen, dass ihn auch Fremde ohne "Vorwissen" erweitern können; in diesem Fall ist es harmlos, aber grundsätzlich gute Praxis.

Statt ! kann man übrigens auch

Code: Alles auswählen

  if (object[2].Animating == false)
verwenden.
Use gopher repellent on funny little man
Benutzeravatar
gff
Profi-Abenteurer
Profi-Abenteurer
Beiträge: 802
Registriert: 09.03.2004, 18:49
Wohnort: Ge
Kontaktdaten:

Re: AGS 2.71 Möchte mehrere Objekte nacheinander abspielen

Beitrag von gff »

steven hat geschrieben:Wieder mal wusste ich, dass Du es sein wirst. =D>
Wäre es möglich daß er tatsächlich der einzige ist der hier noch detailierte Hilfe gibt? Sintrena hat hier schon lange nichts mehr geschrieben...KhrisMUC bleib bitte gesund :wink:
Antworten