surfaceview 이거 책에서 나와있는데로 했는데도 오류가 나와서 질문드립니다.

GameView

  1. package com.framwork; 
  2. import android.content.Context; 
  3. import android.view.SurfaceHolder; 
  4. import android.view.SurfaceView; 
  5. public class GameView extends SurfaceView implements SurfaceHolder.Callback{ 
  6.    private GameViewThread m_thread; 
  7.    public GameView(Context context) { 
  8.       super(context); 
  9.       getHolder( ).addCallback(this); 
  10.       m_thread=new GameViewThread(getHolder( ),this); 
  11.    @Override 
  12.    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 
  13.    @Override 
  14.    public void surfaceCreated(SurfaceHolder arg0){ 
  15.       //스레드를 실행상태로 만듭니다 
  16.       m_thread.setRunning(true); 
  17.       //스레드 실행 
  18.       m_thread.start(); 
  19.    @Override 
  20.    public void surfaceDestroyed(SurfaceHolder arg0){ 
  21.       boolean retry = true
  22.       m_thread.setRunning(false); 
  23.       while(retry){ 
  24.          try
  25.             //스레드 중지 
  26.             m_thread.join(); 
  27.             retry= false
  28.             }catch(InterruptedException e){ 
  29.             //스레드가 중지되도록 계속 시도 
  30.    }  

 

GameViewThread (오류1)

  1. package com.framwork; 
  2. import android.graphics.Canvas; 
  3. import android.view.SurfaceHolder; 
  4. import android.view.View; 
  5. public class GameViewThread extends Thread{ 
  6.    //접근을 위한 멤버변수 
  7.    private SurfaceHolder m_surfaceHolder; 
  8.    private GameView m_gameview; 
  9.    private boolean m_run = false
  10.    public GameViewThread(SurfaceHolder surfaceHolder, GameView gameview) { 
  11.       m_surfaceHolder = surfaceHolder; 
  12.       m_gameview = gameview; 
  13.    public void setRunning(boolean run){ 
  14.       m_run = run; 
  15.    @Override 
  16.    public void run( ) { 
  17.       Canvas _canvas; 
  18.       while(m_run){ 
  19.          _canvas = null
  20.          try
  21.             //SurfaceHolder를 통해 Suface에 접근해서 가져옴 
  22.             _canvas = m_surfaceHolder.lockCanvas(null); 
  23.             synchronized(m_surfaceHolder){ 
  24.                m_gameview.onDraw(_canvas); // 오류 View유형에서 메소드(Canvas)가 가시적이지 않습니다 
  25.             }finally
  26.             if(_canvas != null
  27.             //suface를 화면에 표시 
  28.             m_surfaceHolder.unlockCanvasAndPost(_canvas); 

 

GameViewActivity

  1. package com.framwork; 
  2. import android.os.Bundle; 
  3. import android.app.Activity; 
  4. import android.view.Menu; 
  5. public class GameActivity extends Activity { 
  6.    @Override 
  7.    protected void onCreate(Bundle savedInstanceState) { 
  8.       super.onCreate(savedInstanceState); 
  9.       setContentView(new GameView(this)); 
  10.    @Override 
  11.    public boolean onCreateOptionsMenu(Menu menu) { 
  12.       // Inflate the menu; this adds items to the action bar if it is present. 
  13.       getMenuInflater().inflate(R.menu.activity_game, menu); 
  14.       return true

오류 내용

View유형에서 메소드(Canvas)가 가시적이지 않습니다