Mehrere Buttons - Problem

Posted By: dice

Mehrere Buttons - Problem - 01/09/11 21:05

Nabend,

ich habe mehrere Buttons definiert, die auch gleichzeitig angezeigt werden sollen. Alle Buttons haben Bitmaps und Funktionen zugeordnet.

Wenn ich das Spiel starte, dann werden die BmapOn Bilder von allen Buttons dargestellt, jedoch nur ein Button reagiert (wechselt das Bild) und auch nur von diesem einen Button reagiert die zugeordnete Funktion. Die anderen Bilder reagieren garnicht, sei es BmapOver Anzeige oder Funktionsaufruf - Fehlanzeige.

In A6 hats funktioniert, hier in A8 gibs immer nur einen aktiven Button. Woran liegts?

Gruß, dice

EDIT:
Gibt es Unterschiede zwischen
set(bmap,VISIBLE);
und
set(bmap,SHOW);
???
Benutze noch ersteres...
Posted By: M4sterm1nd

Re: Mehrere Buttons - Problem - 01/09/11 21:43

na so wird dir keiner helfen können.

Wie hast du denn die buttons definiert?

Code?
Posted By: dice

Re: Mehrere Buttons - Problem - 01/09/11 21:56

Code:
PANEL* panel_zettel_tutorial =
{
	layer = 21;
	button (50, 50, zettel_tutorial_pcx, zettel_tutorial_pcx, zettel_tutorial_over_pcx, starte_tutorial(), NULL, NULL);
	flags = OVERLAY,VISIBLE;
}

PANEL* panel_zettel_missionsmodus =
{
	layer = 21;
	button (250, 170, zettel_missionsmodus_pcx, zettel_missionsmodus_pcx, zettel_missionsmodus_over_pcx, show_hauptmenue_mm(), NULL, NULL);
	flags = OVERLAY,VISIBLE;
}

PANEL* panel_zettel_endlosmodus =
{
	layer = 21;
	button (50, 300, zettel_endlosmodus_pcx, zettel_endlosmodus_pcx, zettel_endlosmodus_over_pcx, show_hauptmenue_em(), NULL, NULL);
	flags = OVERLAY,VISIBLE;
}

PANEL* panel_zettel_speichern =
{
	layer = 21;
	button (300, 440, zettel_speichern_pcx, zettel_speichern_pcx, zettel_speichern_over_pcx, spiel_speichern(), NULL, NULL);
	flags = OVERLAY,VISIBLE;
}


PANEL* panel_zettel_beenden =
{
	layer = 21;
	button (550, 430, zettel_beenden_pcx, zettel_beenden_pcx, zettel_beenden_over_pcx, spiel_beenden(), NULL, NULL);
	flags = overlay,visible;
}



Diese Panels starten alle beim Spielstart. Jedoch reagiert nur der letzte Button "panel_zettel_beenden".

Oh...da machts Klick ;D

...merks grad selber... Lösung:

Code:
PANEL* panel_hauptmenue =
{
	layer = 21;
	button (50, 50, zettel_tutorial_pcx, zettel_tutorial_pcx, zettel_tutorial_over_pcx, NULL, NULL, NULL);
	button (250, 170, zettel_missionsmodus_pcx, zettel_missionsmodus_pcx, zettel_missionsmodus_over_pcx, show_hauptmenue_mm(), NULL, NULL);  //show_hauptmenue_mm()
	button (50, 300, zettel_endlosmodus_pcx, zettel_endlosmodus_pcx, zettel_endlosmodus_over_pcx, NULL, NULL, NULL);
	button (300, 440, zettel_speichern_pcx, zettel_speichern_pcx, zettel_speichern_over_pcx, NULL, NULL, NULL);
	button (550, 430, zettel_beenden_pcx, zettel_beenden_pcx, zettel_beenden_over_pcx, spiel_beenden(), NULL, NULL);
	
	flags = OVERLAY,VISIBLE;
}



Scheinbar muss man alle Buttons, die momentan angezeigt werden, unter einem Panel schreiben, damit sie funktionieren.
In A6 war das egal...

Wieso kommt man darauf auch erst wenn man sowas gepostet hat?^^

Naja..schönen Abend noch!
Posted By: Pappenheimer

Re: Mehrere Buttons - Problem - 01/09/11 22:13

Die Buttons können durchaus separat in verschiedenen Panels sitzen, nur dürfen diese Panels sich nicht gegenseitig verdecken. Und da alle Deine Panels die gleiche Position hatten, haben sie sich natürlich überlagert, so dass nur eines der Panel "vorne" liegen konnte und sein Button bedienbar war.
Posted By: Ayumi

Re: Mehrere Buttons - Problem - 01/09/11 22:58

Um deinen EDIT noch zu beantworten,...ja gibt einen Unterschied.

SHOW und VISIBLE werden ja bekanntlich fuer Sky und View Entitys
verwendet, dabei wurde VISIBLE fuer Sky und SHOW fuer Views
benutzt.

Angeblich, (laut Jcl) wurde VISIBLE durch SHOW abgeloest.
Nutzen kannst du aber immer noch beides.


Das gleiche gilt auch fuer:
"set(my, PASSABLE);" und "my.flags/2 |= (PASSABLE);"

Nutzen konnte man mal beides fuer jeweils Views und ENTITYS.
Jetzt geht allerdings nur noch
"set(my, PASSABLE);" ->ENTITYS
"my.flags/2 |= (PASSABLE);" ->VIEW/ Partikel...etc
Posted By: Superku

Re: Mehrere Buttons - Problem - 01/09/11 23:19

button (550, 430, zettel_beenden_pcx, zettel_beenden_pcx, zettel_beenden_over_pcx, spiel_beenden(), NULL, NULL);

Du willst einen Funktions-Pointer dem Button zuweisen, aber du schreibst dort nur den Rückgabewert hinein (beachte die Klammern hinter deiner Funktion).
Das heißt also, dass deine Funktion "spiel_beenden" heißt und NICHT "spiel_beenden()", letzteres ist ein Aufruf.
© 2024 lite-C Forums