2016-09-17 2 views
0

간단한 게임에서 객체의 방향을 변경하는 데 사용되는 사용자 정의 ImageButton을 만들었습니다. 클릭/터치하면 버튼이 응답하지 않습니다. setOnTouchListener 및 setOnClickListener를 시도했지만 아무 일도 발생하지 않습니다.Android 간단한 게임. ImageButton이 클릭되지 않습니다. 비트 맵

CustomButton :

public class CustomButton extends ImageButton { 

private Bitmap bitmap; 

public CustomButton(Context context, int resource) { 
    super(context); 

    setClickable(true); 
    bitmap = BitmapFactory.decodeResource(context.getResources(), resource); 
} 

public Bitmap getBitmap() { 
    return bitmap; 
} 

GameView :

public class GameView extends SurfaceView implements Runnable { 

volatile boolean playing; 
private Thread gameThread = null; 
private CustomButton mLeftButton; 
private Player player; 
private Paint paint; 
private Canvas canvas; 
private Bitmap bitmap; 
private SurfaceHolder surfaceHolder; 
public GameView(Context context, int screenX, int screenY) { 
    super(context); 

    mLeftButton = new CustomButton(context, R.drawable.boom); 
    mLeftButton.setImageBitmap(mLeftButton.getBitmap()); 

    mLeftButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(getContext(),"It worked",Toast.LENGTH_LONG).show(); 
     } 
    }); 

    player = new Player(context, screenX, screenY); 
    surfaceHolder = getHolder(); 
    paint = new Paint(); 
} 

@Override 
public void run() { 
    while (playing) { 
     update(); 
     draw(); 
     control(); 
    } 
} 

private void update() { 
    player.update(); 
} 

private void draw() { 
    if (surfaceHolder.getSurface().isValid()) { 
     canvas = surfaceHolder.lockCanvas(); 
     canvas.drawColor(Color.BLACK); 
     canvas.drawBitmap(player.getBitmap(), player.getX(), player.getY(), paint); 
     canvas.drawBitmap(mLeftButton.getBitmap(), 20, 20, paint); 
     surfaceHolder.unlockCanvasAndPost(canvas); 
    } 
    } 
} 
+0

버튼을 추가하여 볼 수 있습니다. –

+0

단추는 그리기 방법에서 "비트 맵으로 그려집니다"(?)입니다. – TheEagle

+0

캔버스에서 볼 단추를 추가하지 않고 비트 맵을 그립니다. –

답변

1

당신은 당신의 버튼을 만들 수 있지만, 현재 레이아웃에 연결하지.

그리기 방법에서는 단추 기능이 사용되지 않도록 해당 기능을 SurfaceView에 추가하지 않고 단순히 이미지를 그립니다.

버튼 (A RelativeLayout 또는 예 FrameLayout로) 당신의 서피스 뷰 SurfaceView를 통해 어디 어디 당신이 설정하여 Activity하면 설치하려는 버튼의 OnClickListener를 위로 다음 방법으로베이스 XML 레이아웃을 생성하는 것이 좋습니다 것

포함 된보기로 연결하십시오.