2016-05-17 2 views
0

誰かが画面に触れるたびにボールを作りたいと思っていますが、動かすことができません。私はそれを特定の場所で作成し、ボールをスポーンする必要があります。画面にタップがあるかどうかを調べるifステートメントがあり、ifステートメントでは、ウィンドウ内に円を描画するために下に作成されたドローを呼び出します。なぜdraw()コマンドは私の円を描かないのですか

package com.example.madusha.gravityball; 

import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.View; 
import android.widget.Button; 

public class GameWindow extends Activity { 
private Paint paint; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_game_window); 

    Button pause = (Button) findViewById(R.id.pausebutton); 
    pause.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view){ 
      Intent intent = new Intent(GameWindow.this, PauseMenu.class); 
      startActivity(intent); 
     } 
    }); 
} 

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    int Action = event.getAction(); 
    if(Action == KeyEvent.ACTION_DOWN){ 
     onDraw(); 
     System.out.println("Works???"); 
     return true; 
    } 
    return super.onKeyDown(keyCode,event); 
} 
public void init() { 
    paint = new Paint(); 
    paint.setColor(Color.BLUE); 
} 
Canvas canvas; 
public void onDraw(){ 
    init(); 
    int height = 100; 
    int width = 100; 
    canvas.drawCircle(width, height,100,paint); 
} 
} 
+0

Draw()の後にif文の中でtrueを返さなかったためと思われます。 –

+0

私はそれをしましたが、それは私が見ることができる何もしていないようです。 –

答えて

1

OnDraw()関数を使用する必要があります。キャンバスを描画するときにキャンバスが更新されます。

+0

どうすればいいですか、私はアンドロイドの開発には新しく、そのやり方や、何を意味するのか分かりません。 –

+0

OnDrawメソッドが実装されています。つまり、内部にコードを記述します。このOnDrawメソッドは、キャンバス上のすべてを描画します。あなたが他の関数にあなたのコードを置くと、OSは何を描くべきか分からないので、OnDrawメソッドを与えた – Yashodhan

+0

私はあなたが私に言ったと思ったことをやったが、それでも動作しない、私は古い上記のコードを使用してください。 –

1

キャンバスへの描画は、例のようなアクティビティではなく、Viewオブジェクト内でのみ行うことができます。

​​

あなたは、パッケージ名(おそらくcom.yourcompany.yourapp)を交換し、これを実行する必要があります、XMLレイアウトでこれを使用するには - あなたはこのような何か独自のカスタムビューを作成することができます。

<com.yourcompany.yourapp.CustomView 
    android:layout_width="64dp" 
    android:layout_height="64dp"/> 

あなたは、あなたがあなたのレイアウトにこれを追加することができます

View circle = new CustomView(getContext()); 

を行うことによって、コードに新しいビューを作成することができます。

+0

私はこれを行うと、それはまだ私が使用した活動でボールをスポーンするでしょうか? –