2016-09-17 52 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,這樣就不會使用您的按鈕功能。

我建議的方式來創建基本的XML佈局,其中的按鈕是在你surfaceview(帶RelativeLayoutFrameLayout EG),然後在那裏你設置你的Activity你設置了onclicklistener的按鈕並將其連接到包含視圖。