Animierte GUI. Wie??

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Animierte GUI. Wie??

Beitrag von Fightmeyer »

Hallo!

Hat jemand ne Ahnung, wie man ne animierte GUI in AGS machen kann? Ich hab n Icon-Bar und würde gerne das Hintergrundbild der Icon-Bar animieren. Allerdings kann ich ja lediglich ein Bild als Hintergund zuweisen. Nicht jedoch einen View. Hat jemand ne Idee??

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

Beitrag von KhrisMUC »

Anfang vom global script:

Code: Alles auswählen

int cn;  // counter
int ad=10; // animation delay in 1/40 s
int ff=6;  // first frame
int fs=4; // frames
In game_start:

Code: Alles auswählen

SetTimer(1,ad);
In der repeatedly_execute:

Code: Alles auswählen

if (IsTimerExpired(1))
{
  SetTimer(1,ad);
  gIconbar.BackgroundGraphic=ff+cn;
  cn++;
  if (cn=fs) cn=0;
}
edit: Hat erst funktioniert, als ich beim Icon-GUI Visible auf Normal gesetzt habe.
Bei PopUpModal sind sämtliche Anims stehengeblieben.

Ist aber bisschen holprig, z.B. wurde nach Klick auf einen Button dieser nicht als gedrückt dargestellt.
Zuletzt geändert von KhrisMUC am 20.04.2005, 22:42, insgesamt 2-mal geändert.
Use gopher repellent on funny little man
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Ich hoffe, ich hab den Code verstanden...

Seh ich das richtig, daß Dein Code von 6 verschiedenen Hintergundbildern ausgeht??

EDIT: Habs gerade mal ausprobiert. Krieg allerdings n Scriptfehler, weil der Name meiner GUI natürlich n anderer ist als gIconBar

Meine heißt InventoryTwo. Aber selbst mit der Bezcihnung krieg ich den Fehler. Muß ich den Namen irgendwie anders angeben???
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Du musst (glaub ich) gInventorytwo schreiben.

ff=erstes sprite
fs=anzahl der sprites

bei mir warens sprites 6-9, also ff=6, fs=4
Use gopher repellent on funny little man
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Gut. Dann hab ichs glaub ich verstanden.

Die IF-Anweisung hab ich jettz so gebastelt:

if ((IsGUIOn(4)==1) && IsTimerExpired(1))

aber die Zuweisung haut immer noch nciht hin. Auch wenn ich den Namen der Gui klein schreibe...

Vielleicht sollte ich dazu sagen, daß ich mit AGS 2.6_SP1 arbeite...
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Versuch's mal mit SetGUIBackgroundPic (GUI, int slot);
Use gopher repellent on funny little man
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Hab ich auch gerade in der Hilfe gefunden. Danke.
Hab jetzt folgenden Code:

if ((IsGUIOn(4)==1) && IsTimerExpired(1))
{
SetTimer(1,ad);
SetGUIBackgroundPic (4, 2041+cn);
cn++;
if (cn==3) cn=0;
}

Aber es funzt leider nicht. Das Bild bleibt immer das gleiche. Die GUI steht auf Normal.
Woran könnts liegen?
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Wahrscheinlich hast Du im GUI Editor schon das erste frame als Background ausgewählt, oder? Nimm's wieder raus und teste dann, ob der code zumindest 1x ausgeführt wird.

Wenn nicht, würde ich sagen, dass Du das SetTimer(1,10); in der game_start vergessen hast.
Use gopher repellent on funny little man
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Mit dem GUI hatteste Recht. Hab das Hintergundbild wieder auf NONE gesetzt. Timer steht im Script drin. Trotzdem funzt es nicht.

EDIT:
Habs jettz so gelöst. So klappts:

if (IsTimerExpired(1)==1)
{
timeexp=1;
}
if ((IsGUIOn(4)==1) && timeexp==1)
{
SetTimer(1,ad);
SetGUIBackgroundPic (4, 187+cn);
cn++;
timeexp=0;
if (cn==2) cn=0;
}

Die Zwischenvariabel timeexp muß ich verwenden, da IsTimerExpired nur einmal den Wert 1 ausgibt. Danach immer wieder 0. Das war das Problem...

Vielen Dank für Deine Hilfe. Da wär ich allein bestimmt nicht drauf gekommen.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Schau's Dir an: download (AGS 2.7!)

Keine Ahnung, worans sonst liegen kann.
Use gopher repellent on funny little man
Benutzeravatar
Skyhawk
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 77
Registriert: 27.04.2004, 19:40
Kontaktdaten:

Beitrag von Skyhawk »

alternativ funzt auch:


// main global script file
short timer;

function repeatedly_execute
...
timer++;
if (timer==x1) SetGUIBackgroundPic(GUI, int slot);
if (timer==x2) SetGUIBackgroundPic(GUI, int slot);
if (timer==x3) SetGUIBackgroundPic(GUI, int slot);
...
if (timer==xn) timer=0;


nicht ganz so edel, aber narrensicher :D
je älter ich werde, desto weniger verstehe ich....

http://www.tafkasomm.de
Antworten