rectf走出了画布上的边界

kkih6yb8  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(304)

我正在改进一个简单的android游戏arkanoid,我在画布上绘制rectf时遇到了一个小问题。
我实现了一个通电选项,如果你把这个通电,桨从200倍的桨伸展到500倍的桨。

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);

主要的问题是,当我打开电源时,桨成功地从200伸展到500,但是像下面的gif一样超出了边界,认为它仍然是一个200倍的桨。请注意,所有这些都写在ondraw重写函数中。
我知道,我需要实现一种方法来拉伸桨x秒,但现在我想让它先工作。
如有任何建议,我们将不胜感激。:)

bvjveswy

bvjveswy1#

//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);

相关问题