0

加速度計センサーを使って、動くボールと穴のある迷路を作ってみました。次のコードでは、ボールが穴に落ちますが、パフォーマンスは非常に悪く、加速度センサーの周波数を最速に設定しましたが、スムーズ以外はすべてです。穴を開けることができるので、2 つ目のキャンバスを作成しました。

public RenderView(Context context, int width, int height) {
    super(context);
    playGround = new Rect(40, 40, width - 40, height - 40);
    holes.addElement(new PointF(500f, 500f));

    // Set background
    this.setBackgroundResource(R.drawable.bottom);

    // Set bitmap
    woodGround= wood.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    bitmapCanvas = new Canvas();
    bitmapCanvas.setBitmap(woodGround);

    // Set eraser paint properties
    eraserPaint.setAlpha(0);
    eraserPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
    eraserPaint.setAntiAlias(true);
}

protected void onDraw(Canvas canvas) {
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG
            | Paint.FILTER_BITMAP_FLAG);
    paint.setStyle(Style.FILL_AND_STROKE);
    paint.setAntiAlias(true);

    if (ballInHole)
        canvas.drawBitmap(ball, b.x, b.y, paint);

    bitmapCanvas.drawBitmap(wall, 0, 0, paint);
    bitmapCanvas.drawBitmap(wood, playGround, playGround, paint);

    canvas.drawBitmap(bitmap, 0, 0, paint);

    for (PointF h : holes) {
        bitmapCanvas.drawCircle(h.x + radius, h.y + radius, radius,
                eraserPaint);
    }
    if (!ballInHole)
        canvas.drawBitmap(ball, b.x, b.y, paint);
    invalidate();
}

ボールが穴に落ちたときに他のビットマップの下にボールを描くだけなので、非常に醜く解決されました。それを行う別の方法はありますか?

パフォーマンスも非常に悪く、Accelerometer-Sensor-Delay を最速に設定しましたが、ボールがスムーズに動きません。線を取り除くとcanvas.drawBitmap(bitmap, 0, 0, paint);、ボールはより滑らかになりますが、木製の背景は離れています。

4

1 に答える 1