小さな BrickBreaker ゲームを作成しようとしています。
これまでのところ、MainActivity.java、BrickBreakerView.java、および Paddle.java があります。BrickBreakerView は ViewGroup クラスを拡張し、Paddle は View クラスを拡張します。パドル、ブリック、ボール、スコアボード (作成するカスタム ビュー クラス) を BrickBreakerView に追加できるようにしたいと考えています。基本的に、BrickBreakerView はこれらのビューの相互作用を制御します。
MainActivity の xml レイアウトは、レイアウトに BrickBreakerView を追加します。BrickBreakerView は onCreate メソッドでパドルをインスタンス化し、パドルをサブビュー (addView()) として追加します。
Paddle の onDraw メソッドを上書きして、X と Y の位置を指定して青い四角形を描画しました。しかし、プログラムを実行すると、画面に何も表示されません。Log.d でテストして、BrickBreakerView と Paddle のコンストラクターが呼び出されていることを確認しました。
助けてくれてありがとう!また、私は Android 開発の初心者です。私のゲームの構造についてコメントをいただければ幸いです :D!
関連するコードは次のとおりです。
これは私の主な活動で呼び出されます:
setContentView(R.layout.main);
私のmain.xmlは次のようになります:.BrickBreakerView
android:id="@+id/mainView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
BrickBreakerView.java クラス:
public class BrickBreakerView extends ViewGroup{
public BrickBreakerView(Context context, AttributeSet attrs) {
super(context, attrs);
setBackgroundColor(Color.GRAY);
Paddle paddle = new Paddle(context, 100, 400);
paddle.setYPosition(400);
addView(paddle);
Log.d("print", "Brick Breaker View constructor");
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
// TODO Auto-generated method stub
Log.d("print", "onLayout called");
}
}
Paddle.java クラス:
public class Paddle extends View{
private int myX, myY;
public Paddle(Context context, int xPos, int yPos) {
super(context);
// TODO Auto-generated constructor stub
Log.d("print", "paddle constructor");
myX = xPos;
myY = yPos;
invalidate();
}
public void setXPosition(int x) {
myX = x;
invalidate();
}
public void setYPosition(int y) {
myY = y;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
Log.d("print", "onDraw called");
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.BLUE);
canvas.drawRect(myX, myY, myX+100, myY+50, paint);
}
}