2016-09-17 5 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に追加せずに画像を描画するだけで、ボタンの機能は使用されません。

私はあなたには、ボタンのonclicklistenerアップセットアップしたいあなたActivity、その後どこにセットアップ、(RelativeLayoutまたはFrameLayoutなどで)ボタンがあなたのsurfaceviewの上にある方法であなたのベースのXMLレイアウトを作成することをお勧めしたいですそれを含むビューに配線します。

関連する問題