Autor Thema: Display-Anzeige integrieren  (Gelesen 1950 mal)

1mal_volltanken

  • Midlife Crisis Tentakel
  • ******
  • Beiträge: 1266
  • Geschlecht: Männlich
  • Traue niemals einem glatzköpfigen Friseur!
    • ICQ Messenger - 327646596
    • Profil anzeigen
Display-Anzeige integrieren
« am: 08. April 2011, 17:46:44 »
Hallo Leutz!

Ich interessiere mich gerade, wie Ihr eine aktive Display-Anzeige in einem Hintergrund integrieren würdet.

Sprich, solche, die als Temperaturanzeige, Gewichtsanzeige oder sonstige Meßfunktionen dienen und auf allen Stellen auch alle Zahlen anzeigen können (bspw. auf 3 Stellen alle möglichen Werte zwischen 000 und 999).
Dazu möchte ich gerne auch grafische Ziffern verwenden (kein Font).

Die konservative Lösung wäre, für jede Stelle jede Ziffer als Objekt einzufügen.
Für 3 Stellen würde das allerdings 30 Objekte benötigen und für 4 Stellen sogar 40, wenn man auf jeder Stelle alle Zahlen von 0-9 unterbringen möchte.
In technischer Hinsicht ist dieses Vorgehen natürlich Unsinn und schon wegen der Begrenzung der Objektanzahl nicht machbar.

Wie würdet Ihr das denn machen?


BG
der Volltanker

"Tage sind eigentlich wie Nächte...nur nicht ganz so spät!"...hörte ich einmal einen sehr klugen, alten Mann beim Erdnüsse sortieren in der Kneipe sagen, kurz bevor er vom Hocker rutschte.


"Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde!"

1mal_volltanken

  • Midlife Crisis Tentakel
  • ******
  • Beiträge: 1266
  • Geschlecht: Männlich
  • Traue niemals einem glatzköpfigen Friseur!
    • ICQ Messenger - 327646596
    • Profil anzeigen
Re: Display-Anzeige integrieren
« Antwort #1 am: 08. April 2011, 23:00:04 »
Obwohl, mir fiel das grad was ein:

Wäre das nicht möglich, bspw. bei 3-Stelligen-Ziffern drei Objects zu nehmen und diese als Views zu verwenden?

Es gäbe da sicher doch auch ne Möglichkeit, wie bei Hintergründen (SetBackgroundFrame) ähnliches mit Objekten zu machen, oder?
Eben, dass nicht eine komplette Animation abgespielt wird, sondern nur jeweils der bestimmte Frame eingeblendet wird.


BG
der Volltanker
"Tage sind eigentlich wie Nächte...nur nicht ganz so spät!"...hörte ich einmal einen sehr klugen, alten Mann beim Erdnüsse sortieren in der Kneipe sagen, kurz bevor er vom Hocker rutschte.


"Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde!"

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2327
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: Display-Anzeige integrieren
« Antwort #2 am: 08. April 2011, 23:03:35 »
F1 -> Object functions?
Es gibt ein Befehl, mit dem man die Object-Grafik ändern kann. int object.Graphic = slot nummer; oder SetGraphic statt Graphic. Kenn den Befehl grad nicht auswendig.


Folge mir auf X und itch.io

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Display-Anzeige integrieren
« Antwort #3 am: 11. April 2011, 16:03:32 »
Da gibt es verschiedene Möglichkeiten; persönlich würde ich die Zahl bei jeder Änderung neu zeichnen, und zwar auf ein DynamicSprite, das als .BackgroundGraphic eines GUIs gesetzt wird.

[ags]DynamicSprite*MyDisplay;

void UpdateDisplay(int value) {

  String s = String.Format("%03d", value);  // hier wird z.B. 47 zu "047"

  DrawingSurface*ds = MyDisplay.GetDrawingSurface();
  ds.Clear();

  int i, n;
  while (i < 3) {
    n = s.Chars - 48;   // hier mache ich aus den Zeichen des Strings die Ziffern, z.B. s.Chars[1] ist '4' bzw. 52 (ascii) und wird somit zur Zahl 4
    ds.DrawImage(i*20, 0, n + 15);   // die Ziffernsprites sind 18 Pixel breit, 2 Pixel Abstand -> i*20,  die Sprites haben die Slotnummern 15-24, -> n +15
    i++;
  }
  ds.Release();

  gMyDisplay.BackgroundGraphic = MyDisplay.Graphic;   // sprite als Hintergrund setzen (eigentlich nur einmal nötig)
}[/ags]

Der Vorteil eines GUIs liegt auf der Hand, es ist nämlich raumunabhängig. Ansonsten müsste ich für jeden Raum die drei oder vier Anzeige-Objekte erstellen.