2016-04-30 18 views
0

Ich überprüfte die anderen Fragen und konnte nicht einen mit dem gleichen Fall wie mich finden, also hier ist meine Frage.2D Spiel nicht repainting

Ich mache ein 2-Spieler-Stick-Kampfspiel, das Sie auf dem gleichen Computer mit verschiedenen Tasten spielen können. Alles ist in Ordnung, aber wenn ich versuche, das Oval mit den Tasten auf dem Bildschirm zu bewegen, bewegt es sich nicht.

Hier ist der Code für meinen ersten Klasse - http://pastebin.com/wA0JXdzr zweite Klasse - http://pastebin.com/ArByyirt

Ich glaube, ich brauche in meiner zweiten Klasse in der gameloop zu nennen neu streichen, aber es ist zu sagen, dass es nicht eine statische Referenz machen kann es.

+0

Es wird abgeraten, einen externen Dienst zum Teilen von Codes zu verwenden. Codes sollten in der Frage direkt als Text enthalten sein. – MikeCAT

+0

Mein Fehler, ich bin einfach schrecklich mit den Code-Blöcken, sie würden nicht richtig einfügen. – Joey402

Antwort

0

Sie versuchen, eine nicht statische Methode direkt von einer anderen Klasse aufzurufen, die in Java nicht zulässig ist. Die Methode paint() in Ihrer ersten Klasse ist die nicht statische Methode. Sie konnten die Variablen stickx2 und so verwenden, weil sie wie in Ihrer ersten Klasse definiert statisch sind.

Also, ich schlage vor, Sie erstellen ein Objekt von StickFrame() in der GameLoop-Klasse und kopieren Sie Ihren gesamten Code in Ihrer StickFrame-Hauptmethode und legen Sie es in Ihre GameLoop-Hauptmethode. Es wird nicht empfohlen, zwei Hauptmethoden zu verwenden.

Eine Stick-Frame-Variable unterhalb Ihrer Serialisierungs-ID deklarieren.

StickFrame s; 

Dann instanziiert es in Ihrem gameLoop Konstruktor

s = new StickFrame(); 

Jetzt müssen wir die Repaint von einer anderen Klasse Problem zu beheben. Dazu benötigen wir eine Methode in der gameLoop-Klasse.

public void repaintStickFrame() 
    { 
     s.repaint(); 
    } 

es dann von

s.repaintStickFrame() in your loop. 

rufen oder Sie können

s.repaint();//place in loop 

Heres ein Link zu einer Frage einfach anrufen, die ähnlich wie bei Ihnen ist und Lösungen sowie

Calling repaint from another class JFrame

Heres ein Link, der erklärt, wie Sie ein Objekte Methode aufrufen können, wenn Sie eine erstellt haben (wie wir oben haben, die uns die repaint() -Methode von einer anderen Klasse zu nennen erlaubt):

https://docs.oracle.com/javase/tutorial/java/javaOO/usingobject.html