RectF 在 Canvas 超出边界
RectF goes out of borders on Canvas
我正在改进一个名为 Arkanoid 的简单 Android 游戏,我在 Canvas.
上绘制 RectF 时遇到了一个小问题
我实现了一个增强选项,如果你使用这个增强选项,Paddle 会从 200x Paddle 延伸到 500x Paddle。
private RectF r;
private Paint paint = new Paint();
private Bitmap flipperBit;
// Draw Paddle
flipperBit = BitmapFactory.decodeResource(getResources(), R.drawable.flipper);
paint.setColor(Color.WHITE);
if (powerUpTaken) {
r = new RectF(flipper.getX(), flipper.getY(), flipper.getX() + 500, flipper.getY() + 40);
} else {
r = new RectF(flipper.getX(), flipper.getY(), flipper.getX() + 200, flipper.getY() + 40);
}
canvas.drawBitmap(flipperBit, null, r, paint);
主要问题是,当我按下通电时,Paddle 成功地从 200 拉伸到 500,但超出了边界,如下面的 gif 所示,认为它仍然是 200x Paddle。
请注意,所有这些都写在 onDraw 重写函数中。
我知道,我需要实现一种将 Paddle 拉伸 x 秒的方法,但现在我想让它先工作。
如有任何建议,我们将不胜感激。 :)
//set to ZERO if not needed
final cMargin = 10;
int cPaddingWidth;
final int cPaddingHeight = 40;
final RectF cRectF = new RectF();
if (powerUpTaken) cPaddingWidth = 500;
else cPaddingWidth = 200;
cRectF.left = Math.max(cMargin, flipper.getX());
cRectF.right = cRect.left + cPaddingWidth;
if (cRectF.right > (this.getWidth() - cMargin)) {
cRectF.left = (this.getWidth() - cMargin) - cPaddingWidth;
cRectF.right = cRectF.left + cPaddingWidth;
}
cRectF.top = Math.max(0, flipper.getY());
cRectF.bottom = cRect.top + cPaddingHeight;
r.set(cRectF);
我正在改进一个名为 Arkanoid 的简单 Android 游戏,我在 Canvas.
上绘制 RectF 时遇到了一个小问题我实现了一个增强选项,如果你使用这个增强选项,Paddle 会从 200x Paddle 延伸到 500x Paddle。
private RectF r;
private Paint paint = new Paint();
private Bitmap flipperBit;
// Draw Paddle
flipperBit = BitmapFactory.decodeResource(getResources(), R.drawable.flipper);
paint.setColor(Color.WHITE);
if (powerUpTaken) {
r = new RectF(flipper.getX(), flipper.getY(), flipper.getX() + 500, flipper.getY() + 40);
} else {
r = new RectF(flipper.getX(), flipper.getY(), flipper.getX() + 200, flipper.getY() + 40);
}
canvas.drawBitmap(flipperBit, null, r, paint);
主要问题是,当我按下通电时,Paddle 成功地从 200 拉伸到 500,但超出了边界,如下面的 gif 所示,认为它仍然是 200x Paddle。 请注意,所有这些都写在 onDraw 重写函数中。
我知道,我需要实现一种将 Paddle 拉伸 x 秒的方法,但现在我想让它先工作。
如有任何建议,我们将不胜感激。 :)
//set to ZERO if not needed
final cMargin = 10;
int cPaddingWidth;
final int cPaddingHeight = 40;
final RectF cRectF = new RectF();
if (powerUpTaken) cPaddingWidth = 500;
else cPaddingWidth = 200;
cRectF.left = Math.max(cMargin, flipper.getX());
cRectF.right = cRect.left + cPaddingWidth;
if (cRectF.right > (this.getWidth() - cMargin)) {
cRectF.left = (this.getWidth() - cMargin) - cPaddingWidth;
cRectF.right = cRectF.left + cPaddingWidth;
}
cRectF.top = Math.max(0, flipper.getY());
cRectF.bottom = cRect.top + cPaddingHeight;
r.set(cRectF);