M0286_Libro Curso
Android
if (mY <= 0) { mY = 0;
mSpeedY = -mSpeedY;
} if (mY + mBitmap.getHeight() >= Panel.mHeight) { mSpeedY = -mSpeedY; mY = Panel.mHeight - mBitmap.getHeight(); } } Ahora en la clase Panel, debemos realizar unos ligeros cambios en el método surfaceChanged() . public static float mWidth ; public static float mHeight ; public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { mWidth = width; mHeight = height; } Debemos añadir las variables mWidth y mHeight , que ya utilizamos en el método checkBorders() , y serán las que definan las dimensiones de nuestra surfaceView .
También debemos modificar el método doDraw() : private Paint mPaint = new Paint(); public Panel(Context context) { super(context);
getHolder().addCallback(this); mThread = new ViewThread(this); mPaint.setColor(Color. WHITE );
} public void doDraw(Canvas canvas) { canvas.drawColor(Color. BLACK ); synchronized (mElements) {
for (Element element : mElements) { element.doDraw(canvas); } } canvas.drawText(“FPS: “ + Math. round (1000f / elapsed) + “ Elements: “ + mElementNumber, 10, 10, mPaint); } Ahora se necesitan dos parámetros en lugar de solo el Canvas . El primer parámetro será el tiempo transcurrido, y el segundo, el Canvas utilizado para dibujar. El tiempo transcurrido se utiliza para calcular el FPS ( Frames por Segundo ). El onTouchEvent() también lo vamos a modificar, porque ahora actualizamos la variable mElementNumber, de modo que no tiene que ser llamado cada vez que se genera en el marco del método doDraw()
100
Made with FlippingBook - Online catalogs