0

小さな 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);
}

}

4

1 に答える 1

0

パドル インスタンスをブリック ブレーカー ビューのメンバー変数にします。それを作成してビューグループに追加します - あなたはこれをやっています。onLayout に paddle.layout(0,0,100,100) を入れる

于 2012-07-31T07:01:52.087 に答える