2012-02-16 20 views
0

私はPing Pongゲームを構築しようとしています。パドルは画面の下部に表示され、レンガは上部に表示されています。私は3つのビュー、パドルのための1つのボールのための1と2つのビュー(ボールとパドルを)塗料メインビューがある別のものを使用します。私が識別できる場合どのビューがタッチされているかを知る方法

public void draw(Canvas canvas){ 
    BallView.draw(canvas); 
    PaddleView.draw(canvas); 
} 

私が知りたいことはありますどのビューを正確にタッチされて、私はメインの活動でonTouchEventでそれをやろう:

@Override 
    public boolean onTouchEvent(MotionEvent event){ 
     Log.d("touched", "touched") 
     return true; 
    } 

しかし、問題は、私は、画面上で触れ関係なく、パドルを移動していることである、と私はしたいですパドルに触れるときだけ、彼は動くだろう。 さて、どうすればいいですか?おかげさまで

+0

は両方付け(v.getId == R.id場合、単純にやるよりも、異なるID ....プライベートOnTouchListener tListener1 =新しいOnTouchListener(){ 公共ブールonTouch(ビューV、MotionEventイベント)を表示します。青){} else if(v.getId == R.id.yellow){}私はこれがうまくいくことを望みます。 –

+0

@pakshaheen私はJavaファイルからIDを設定できますか?私はXMLファイルを持っていないからです。 –

+0

はい、できます。 ScrollViewビュー=新しいScrollView(this); \t \t view.setId(2); –

答えて

0

AndroidのOnTouchイベントには、イベントを発生させたビューを識別できるビュータイプパラメータが既にあります。例hereがあります。

2

これを実現するには、相対的な2つのレイアウトを青色と黄色で描画し、相対レイアウトをclickableとして設定します。つまり、xmlからtrueを返し、onClick:onClickHandlerを処理します。これがあなたのために働くことを望みます。

   <RelativeLayout 
        android:id="@+id/rl_click_blue" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentRight="true" 
        android:background="#ffffff" 
        android:clickable="true" 
        android:onClick="onClickHandler"> 
       </RelativeLayout> 

       <RelativeLayout 
        android:id="@+id/rl_click_yellow" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentRight="true" 
        android:background="#ffffff" 
        android:clickable="true" 
        android:onClick="onClickHandler"> 
       </RelativeLayout> 

       // Handle your functionality here. 
       public void onClickHandler(View v) 
       { 
        switch (v.getId()) { 
         case R.id.rl_click_blue: 
          break; 

         case R.id.rl_click_yellow: 

          break; 
        } 
       } 
関連する問題