Problem mit DDgui

Previous topic - Next topic

Quentin

wühle mich zur Zeit ein wenig durch DDgui, um damit eine Spielsteuerung hinzubekommen. Bei einem Dialog, der lediglich einige Strings anzeigen soll, ist das Ergebnis etwas seltsam. Zwischen dem ersten und zweiten String klafft eine recht große Lücke.



hier der Code dazu:
Habe es mit und ohne Spacer probiert, mit und ohne nachfolgende Leerzeichen. Immer das gleiche Ergebnis. Wenn ich den ersten Spacer setze, werden die Strings zwar zusammenhängend dargestellt, noch oben ist jedoch ein ziemlich großer Bereich dann frei.

Kleiner Hinweis vielleicht, was ich hier falsch mache?

Code (glbasic) Select
// ------------------------------------------------------------- //
// -=#  DIA_CONTROL  #=-
// ------------------------------------------------------------- //
FUNCTION dia_control:

  SETFONT 2
  DDgui_pushdialog(100, 100, 500, 300)
  DDgui_set("MOVEABLE", TRUE)
  DDgui_set("TEXT", "Steuerung")

  //DDgui_spacer(1000, 0)    
  DDgui_widget("", "Cursor oben   --> Beschleunigen     ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Cursor unten  --> Bremsen           ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Cursor links  --> nach links drehen ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Cursor rechts --> nach rechts drehen", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Leertaste     --> Laser feuern      ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "L             --> Laser wechseln    ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "ESC           --> Menue/Pause       ", 0, 0)
  //DDgui_spacer(1000, 0)
                                               
  DDgui_spacer(200, 50)
  DDgui_button("bt_ok", " Zurueck", 100, 25)
 
  WHILE TRUE
    DDgui_show(FALSE)
    IF DDgui_get("bt_okCLICKED")
      BREAK
    ENDIF
    SHOWSCREEN
    HIBERNATE
  WEND
 
  DDgui_popdialog()

ENDFUNCTION // DIA_CONTROL

Quentin

habe glaube ich die Ursache gefunden, auch wenn ich den Zusammenhang nicht so recht verstehe.

Im ersten Dialog werden die Buttons mit Grafiken dargestellt. Wenn ich diese mit einfachem Text darstellen, wird auch der o.g. Dialog korrekt dargestellt. Die Lücke zwischen den Texten entspricht anscheinend genau der Höhe der Button-Grafik ...

hääääääähh???

Kitty Hello

Bei mir läufts. Bitte schick mir mal den ganzen Code, oder reduziere das Beispiel auf ein kleines, das nicht geht.
Code (glbasic) Select
// --------------------------------- //
// Project: _burp
// Start: Friday, July 13, 2007
// IDE Version: 4.237

SYSTEMPOINTER TRUE
  DDgui_pushdialog(0, 0, 500, 300)
  DDgui_set("MOVEABLE", TRUE)
  DDgui_set("TEXT", "Hintergrund")

DDgui_button("bt_A", "Test", 0,40)
DDgui_spacer(100000,0)
DDgui_button("bt_B", "Test", 0,40)
DDgui_spacer(100000,0)
DDgui_button("bt_C", "Test", 0,40)
DDgui_spacer(100000,0)



dia_control()

// ------------------------------------------------------------- //
// -=#  DIA_CONTROL  #=-
// ------------------------------------------------------------- //
FUNCTION dia_control:
  DDgui_pushdialog(100, 100, 500, 300)
  DDgui_set("MOVEABLE", TRUE)
  DDgui_set("TEXT", "Steuerung")

DDgui_widget("", "Test", 0,0)
DDgui_spacer(100000,0)

  //DDgui_spacer(1000, 0)    
  DDgui_widget("", "Cursor oben   --> Beschleunigen     ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Cursor unten  --> Bremsen           ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Cursor links  --> nach links drehen ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Cursor rechts --> nach rechts drehen", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Leertaste     --> Laser feuern      ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "L             --> Laser wechseln    ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "ESC           --> Menue/Pause       ", 0, 0)
  //DDgui_spacer(1000, 0)
                                               
  DDgui_spacer(200, 50)
  DDgui_button("bt_ok", " Zurueck", 100, 25)
 
  WHILE TRUE
    DDgui_show(FALSE)
    IF DDgui_get("bt_okCLICKED")
      BREAK
    ENDIF
    SHOWSCREEN
    HIBERNATE
  WEND
 
  DDgui_popdialog()

ENDFUNCTION // DIA_CONTROL

Quentin

jau, wenn ich die Buttons nur mit Texten anlege, klappt es ja auch, nur wenn ich statt der Texte Grafiken als Buttons anzeige

also mit:

Code (glbasic) Select
LOADSPRITE "options.bmp", 0
DDgui_button("bt_options", "SPR_B 0", 0, 0)
dann kommt dieser Effekt.
nachprüfbar mit folgendem Progrämmchen:
Die Grafiken sind 200x70.
Bei mir (allerdings mit DEMO-Version von GL) tritt dann noch der seltsame Effekt auf, daß, wenn ich auf "Optionen" klicke und der entsprechende Dialog angezeigt wird, anschließend nach der Rückkehr aus diesem Dialog der zweite Button gar nicht mehr angezeigt wird ???


Code (glbasic) Select
SYSTEMPOINTER TRUE
DDgui_pushdialog(100, 100, 210, 300)
DDgui_set("MOVEABLE", TRUE)
DDgui_set("SCALEABLE", TRUE)
DDgui_set("TEXT", "Main")

LOADSPRITE "options.bmp", 0
LOADSPRITE "score.bmp", 1
LOADSPRITE "ende.bmp", 2

//DDgui_button("bt_options", "Optionen", 0, 0)
DDgui_button("bt_options", "SPR_B 0", 0, 0)
DDgui_spacer(10000, 0)
//DDgui_button("bt_score", "Highscore", 0, 0)
DDgui_button("bt_scroe", "SPR_B 1", 0, 0)
DDgui_spacer(10000, 0)
//DDgui_button("bt_ende", "Beenden", 0, 0)
DDgui_button("bt_ende", "SPR_B 2", 0, 0)

WHILE TRUE
  DDgui_show(FALSE)
  IF DDgui_get("bt_optionsCLICKED")
    dia_options()
  ENDIF
  IF DDgui_get("bt_scoreCLICKED")
    PRINT "Highscore:", 0, 0
  ENDIF
  IF DDgui_get("bt_endeCLICKED") THEN END
  SHOWSCREEN
  HIBERNATE
WEND


// ------------------------------------------------------------- //
// -=#  DIA_OPTIONS  #=-
// ------------------------------------------------------------- //
FUNCTION dia_options:

  DDgui_pushdialog(200, 150, 300, 200)
  DDgui_set("MOVEABLE", TRUE)
  DDgui_set("TEXT", "OPTIONEN")

  DDgui_widget("", "links drehende Milchsaeuren", 0, 0)
  DDgui_widget("", "rechts drehende Milchsaeuren", 0, 0)
  DDgui_widget("", "gar keine Milchsaeuren", 0, 0)
  DDgui_widget("", "selber sauer sein", 0, 0)

  DDgui_spacer(10000, 30)
  DDgui_button("bt_ok", " OK ", 0, 0)

  WHILE TRUE
    DDgui_show(FALSE)
    IF DDgui_get("bt_okCLICKED")
      BREAK
    ENDIF
    SHOWSCREEN
    HIBERNATE
  WEND

  DDgui_popdialog()

ENDFUNCTION // DIA_OPTIONS

Kitty Hello

DDgui-gbas, Zeile 478, vor die Zeile "FOR i = 1 TO DDgui_get("COUNT")"
Bitte einfügen:
dy_line=0

Ich mach ein Update.
PS. Du hast einen Typo: bt_scroe statt bt_score.

Quentin

Super, gehts jetzt. War bei mir allerdings Zeile 418. Ich nehme an du meintest Funktion DDgui_show.

Der Effekt, daß der zweite Button verschwindet (nach Klick auf Optionen und dort auf ok) besteht allerdings weiterhin. Das geschieht allerdings unabhängig davon, ob man nur Text oder Grafiken verwendet. Konntest du das auch nachvollziehen oder liegt es evtl. daran, daß ich hier nur mit Ver. 4.192 arbeite?

Kitty Hello

Geht bei mir. Jetzt nochwas zu 4.192.
Ich weiß, dass die geknackt wurde, und es tut mir leid, dass das gerade kurz vor einer großen Änderung geschehen ist mit den TYPEs.
Installier halt das aktuelle SDK parallel dazu, sonst wirst Du unglücklich. Die aktuelle DEMO ist immer besser. Und hat ja kein 30 Tage limit oder so...

Quentin

kein Problem, hab zu Hause ja die registrierte Version auf dem neuesten Stand. Ich probiers heute abend mal aus.

Also wenn man mal ein wenig dahinter gestiegen ist, ist DDgui wirklich klasse.