2017-11-02 9 views
0

「Androidゲームプログラミング by Example」の書籍「Kotlin」を勉強しようとしています。今はスレッドを作成することができません。 Javaでは、スレッドは最初に0で定義され、後でsleep()で遅延されます。私はまだ新人だから、コードを私のニーズに合わせてカスタマイズすることはできません。そういうわけで、Kotlinのスレッドについての説明が見つかりました。しかし私はそれを実践することはできません。誰かが私の例を使ってこれを行う方法を教えてもらえますか? スレッドのコード行を削除しました。JavaスレッドをKotlinに変換する

public class TDView extends SurfaceView implements Runnable { 

//Thread related 
volatile boolean playing; 
Thread gameThread = null; //Line 29 
... 
private void control() { 
    try { 
     gameThread.sleep(17);   //Line 310 
    } catch (InterruptedException e) { 
     //catch things here 
    } 
} 

public void pause() { 
    playing = false; 
    try { 
     gameThread.join();    //Line 319 
    } catch (InterruptedException e) { 
     //catch things here 
    } 
} 

public void resume() { 
    playing = true; 
    gameThread = new Thread(this); //Line 327 
    gameThread.start(); 
} 

コード全体はhereです。

私はこのようにそれを行うだろうと思って

private val gameThread: Thread? = null 
. 
//Line 310 same as Java -- here I can't find the sleep-method 
//Line 319 same as Java 
. 
gameThread? = Thread(this) 
gameThread.start() 

P.S.私はthis記事を読みましたが、私は、それに合わせて方法がわからない。

+0

特定のセクションをスキップするのではなく、完全なKotlinコードを投稿した方が簡単だと思います。私はあなたが達成しようとしていたものを見ることができますが、完全なコードが役立つでしょう。 – Michael

+1

正確に何が問題なのですか?私にとっては明らかではない。 – AxelH

+0

私はkotlinで正しいコードを書く方法を知りたいです。どのようにして、あなたはなぜでしょうか。 @Michaelここに私のコードがあります(https://gist.github.com/willhoh/9c6e8bc18983f86af3e6e0e2aa1fd499) – WillHoh

答えて

0

あなたは、コードのメニューにメインメニュー、ポイントにKotlin

  1. へのJavaのコードを変換することができます。
  2. [JavaファイルをKotlinファイルに変換]を選択します。

@Volatile internal var playing: Boolean = false 
internal var gameThread: Thread? = null //Line 29 

private fun control() { 
    try { 

     //because that don't exist you can try that 
     //gameThread!!.sleep(17)   //Line 310 

     Thread.sleep(17) 
     gameThread!!.stop() //Line 310 
    } catch (e: InterruptedException) { 
     //catch things here 
    } 

} 

fun pause() { 
    playing = false 
    try { 
     gameThread!!.join()    //Line 319 
    } catch (e: InterruptedException) { 
     //catch things here 
    } 

} 

fun resume() { 
    playing = true 
    gameThread = Thread(this) //Line 327 
    gameThread!!.start() 
} 
+1

...あなたはAndroid Studioを使用しています。 –

+0

良い点、あなたは私のコード – gmetax

+0

をテストすることができます。私は制御機能を変更し、 "gameThread !! stop()"を使わずに "Thread.sleep(17)"を使いました。しかし、なぜインスタンスメソッドgameThread.sleepではなくClassメソッドを使用する必要がありますか? – WillHoh

関連する問題