2016-04-30 9 views
0

私は他の質問をチェックして、私と同じケースを見つけることができなかったので、私の質問がここにあります。2Dゲームが再塗り替えされない

私は2人のプレイヤーが別のキーを使用して同じコンピュータでプレイできる戦闘用のゲームを作っています。すべてが問題ありませんが、キーで画面上の楕円を動かそうとすると、動きません。

ここに私の最初のクラスのコードです - http://pastebin.com/wA0JXdzr 二級 - http://pastebin.com/ArByyirt

私はgameloopで私の第二のクラスに再描画コールする必要があると思うが、それはをstatic参照できないことを言っているが、それ。

+0

コードを共有するために外部サービスを使用することはお勧めしません。コードは質問に直接テキストとして含める必要があります。 – MikeCAT

+0

私のコードブロックはひどいですが、正しく貼り付けられません。 – Joey402

答えて

0

Javaでは有効ではない別のクラスから非静的メソッドを直接呼び出そうとしています。あなたのファーストクラスのpaint()メソッドは非静的メソッドです。変数stickx2などは、ファーストクラスで定義されているように静的であるため、使用できました。

このように、gameLoopクラスにstickFrame()のオブジェクトを作成し、すべてのコードをあなたのstickframe mainメソッドにコピーして、gameLoopメインメソッドに入れることをお勧めします。主に2つの方法があることを強くお勧めします。

スティルフレーム変数をシリアル化IDより下に宣言します。

StickFrame s; 

は、その後、あなたのgameLoopコンストラクタで、それをインスタンス化

s = new StickFrame(); 

は、今は別のクラスの問題から再描画を修正する必要があります。 これを行うには、gameLoopクラスにメソッドが必要です。その後

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

s.repaintStickFrame() in your loop. 

でそれを呼び出すか、あなただけの相続人はあなたに似ているとよく

としての解決策がある質問へのリンクを

s.repaint();//place in loop 

を呼び出すことができますCalling repaint from another class JFrame

(私たちは別のクラスからの再描画()メソッドを呼び出すことが許さ上で行ったように、)あなたは1を作成したら、あなたがオブジェクトのメソッドを呼び出すことができる方法を説明0

HERESにリンク:

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

関連する問題