Ergebnis 1 bis 9 von 9

Thema: Java und Graphics

  1. #1

    Users Awaiting Email Confirmation

    Java und Graphics

    Heyho.
    Ich bin gerade wieder ein bisschen am Basteln mit Java :>

    Ich kam auf die Idee, ein bisschen mit den Graphics-Klassen rumzuspielen.
    Da stoß ich auch schon wieder auf ein kleines Steinchen im Weg.

    Ich hab ne Klasse namens "Screen", die von JFrame erbt.
    In dieser Klasse erzeuge ich Objekte.

    Und diese Objekte erben von JComponent und haben die paintComponent(Graphics g) Methode überschrieben (um z.b. eine Wolke oder ein Flugzeug darzustellen).
    Ich hab also bspw. eine Klasse "Wolke" und eine Klasse "Flugzeug" mit der paintComponent() Methode.

    Wie füge ich diese einzelnen Objekte meiner Klasse "Screen" hinzu?
    mit add(); geht das ganze nicht ( ein einzelnes Objekt geht, bei mehreren wird halt nix angezeigt).

    Vielleicht bin ich auf einfach wieder zu dumm um auf eine gute Lösung zu kommen

  2. #2
    Ein JFrame ist für sowas auch nicht wirklich geeignet.
    Ein JFrame ist ein GUI-Fenster. Dort arbeitest du mit sog. Layout-Managern.
    JComponent sind nur Komponenten, die mittels den Layout-Managern angeordnet werden.

    Das, was du wohl brauchst, ist eine Zeichenfläche (auch Canvas genannt).
    Da würde ich dir vorschlagen, dich mit der Java2D API auseinanderzusetzen. Das wird wohl das sein, was du willst.

    Geändert von Whiz-zarD (15.06.2013 um 11:12 Uhr)

  3. #3

    Users Awaiting Email Confirmation

    Oh man. War mal wieder etwas unüberlegt von mir.
    Mit nem JPanel gehts natürlich. Vielen Dank :>

  4. #4

    Users Awaiting Email Confirmation

    Hey ich bins nochmal.
    Ich bin im Moment am Überlegen, wie ich Animationen darstelle.
    Normalerweise funktioniert das ja in einem Thread. Alles kein Ding.
    Ich bin nur gerade dabei an einem kleinen JnR zu basteln.
    Ich hab hier mal mein bisheriges Klassendiagramm.
    Also: Ich habe meine Klasse GameDisplay, die von JPanel erbt. auf der wird alles, was so auf dem Bildschirm ist, gezeichnet.
    Dann gibt's da den Spieler und ein paar weitere Objekte, die darauf gezeichnet werden sollen.
    Jedes Objekt implementiert mein Interface "Drawable".
    alle Objekte kommen in die ArrayLists von Display rein.( in einer Schleife werden alle Objekte in der ArrayList abgearbeitet und gezeichnet)
    Es geht jetzt aber mehr darum, dass sich die ganzen Teile bewegen sollen.
    Ich würde jetzt zusätzlich zu jedem Objekt, das gezeichnet werden soll, ein Attribut hinzufügen, dass von Thread erbt und die ganzen Animationen durchführt.
    Ich müsste also jedem Thread das Graphics g-Objekt übergeben( Kein Ding) aber wie kommt das ganze wieder zur drawOnScreen-Methode des Objektes zurück?

    Vllt hab ich auch wieder nur einen Knick im Kopf.

  5. #5
    Ich würde dir raten, eine Engine zu benutzen. Dann musst du auch den sog. Game-Loop nicht selbst implementieren.
    Schon mal, das was du da grad bastelst, keine Hardware-Beschleunigung besitzt. Du wirst also schnell an einem Punkt kommen, wo das Spiel ruckeln wird.
    Mach dich also lieber mit OpenGL vertraut. Als simple Engine kannst du ja Slick2D verwenden. Ich weiß aber nicht, wie die Dokumentation aussieht. Also ich die Engine getestet habe, war die Doku noch recht unvollständig und unübersichtlich.

  6. #6

    Users Awaiting Email Confirmation

    Ich habe nicht vor eine eigene Engine für sowas zu verwenden.
    Ist ja auch nur für was kleines gedacht.

  7. #7
    Du wirst aber nicht drumherum kommen, eine kleine Engine zu basteln.

  8. #8
    http://libgdx.badlogicgames.com/

    Trust me (Slick2D ist eigentlich tot, nutz es lieber nicht).

    Egal wie klein das ist was du machen willst, du brauchst immer Sachen die eine Engine abdeckt (Sprites, Batching, Gameloop, etc). Auch will ich dir raten direkt Swing für sowas zu vergessen. Das ist komplizierter als es sein muss imho.

  9. #9
    Zitat Zitat von R.D. Beitrag anzeigen
    Seriously tho, trust him.

    LibGDX ist - gerade auch wegen seines Crossplattform-Gedankens - grandios für grafische Sachen mit Java. Mittlerweile existieren Backends für Android, GWT, iOS etc., mit denen die gleiche Anwendung ohne Zusatzaufwand deployed werden kann. Du schreibst und testest deinen Code auf dem Desktop und kannst ihn dann auch problemlos* auf anderen Geräten ausführen.

    * klappt meistens auch ziemlich gut. ;)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •