Animierte GUI. Wie??
- Fightmeyer
- Riesiger Roboteraffe
- Beiträge: 7308
- Registriert: 16.12.2004, 22:51
- Wohnort: Potsdam
- Kontaktdaten:
Animierte GUI. Wie??
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
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
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
Anfang vom global script:
In game_start:
In der repeatedly_execute:
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.
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
Code: Alles auswählen
SetTimer(1,ad);
Code: Alles auswählen
if (IsTimerExpired(1))
{
SetTimer(1,ad);
gIconbar.BackgroundGraphic=ff+cn;
cn++;
if (cn=fs) cn=0;
}
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
- Fightmeyer
- Riesiger Roboteraffe
- Beiträge: 7308
- Registriert: 16.12.2004, 22:51
- Wohnort: Potsdam
- Kontaktdaten:
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???
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???
- Fightmeyer
- Riesiger Roboteraffe
- Beiträge: 7308
- Registriert: 16.12.2004, 22:51
- Wohnort: Potsdam
- Kontaktdaten:
- Fightmeyer
- Riesiger Roboteraffe
- Beiträge: 7308
- Registriert: 16.12.2004, 22:51
- Wohnort: Potsdam
- Kontaktdaten:
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?
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?
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
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.
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
- Fightmeyer
- Riesiger Roboteraffe
- Beiträge: 7308
- Registriert: 16.12.2004, 22:51
- Wohnort: Potsdam
- Kontaktdaten:
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.
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.
- Skyhawk
- Verpackungs-Wegwerfer
- Beiträge: 77
- Registriert: 27.04.2004, 19:40
- Kontaktdaten:
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
// 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