2017-11-02 4 views
0

나는 "안드로이드 게임 프로그래밍 예"라는 책을 통해 Kotlin을 배우려고합니다. 이제 더 이상 스레드를 만들 수 없습니다. Java에서 스레드는 먼저 0으로 정의되고 나중에 sleep()으로 지연됩니다. 나는 아직 신참이기 때문에 원하는대로 코드를 사용자 정의 할 수 없습니다. 그것이 내가 Kotlin의 스레드에 대한 설명을 찾은 방법입니다. 그러나 나는 그것을 실천할 수 없다. 누군가가 내 예제를 사용하여이 작업을 수행하는 방법을 알려 줄 수 있습니까? 스레드에 대한 코드 줄을 자릅니다.자바 스레드를 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

당신은 코드 메뉴로 메인 메뉴를 가리킨에 코 틀린

  1. 자바에서 코드를 변환 할 수 있습니다.
  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

관련 문제