我正在尝试创建一个小型的BrickBreaker游戏。
到目前为止,我有一个MainActivity.java,BrickBreakerView.java和一个Paddle.java。 BrickBreakerView扩展了ViewGroup类,Paddle扩展了View类。我希望能够在BrickBreakerView中添加Paddle,Bricks,Ball和Scoreboard(我将创建的自定义视图类)。从本质上讲,BrickBreakerView将控制这些视图的交互。
MainActivity的xml布局为布局添加了一个BrickBreakerView。 BrickBreakerView在onCreate方法中实例化一个Paddle,它还将paddle添加为子视图(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);
}
}
答案 0 :(得分:0)
使paddle实例成为brick breaker视图的成员var。 创建并将其添加到视图组 - 您正在执行此操作。 在onLayout中,输入paddle.layout(0,0,100,100)