Hi, Yesterday, I've changed my code, to work with the matrix more effectively...
My GameEntity class now looks like this: ----------GAME ENTITY---------- public class GameEntity { public Bitmap mBitmap; private Rect mBounds; private Matrix mMatrix; public int mWidth; public int mHeight; public boolean mAlive; public float mX, mY; public float mVelocityX, mVelocityY; public float mMoveAngle, mFaceAngle; public float mRotationVelocity; public GameEntity(Bitmap bitmap) { mBitmap = bitmap; mBounds = new Rect(); mMatrix = new Matrix(); mWidth = bitmap.getWidth(); mHeight = bitmap.getHeight(); mAlive = false; mX = 0.0f; mY = 0.0f; mVelocityX = 0.0f; mVelocityY = 0.0f; mMoveAngle = 0.0f; mFaceAngle = 0.0f; mRotationVelocity = 0.0f; } public void draw(Canvas canvas, float angle) { Matrix m = mMatrix; m.reset(); m.postTranslate(mX - mWidth / 2, mY - mHeight / 2); m.postRotate(angle, mX, mY); canvas.drawBitmap(mBitmap, m, null); } public Rect getBounds() { mBounds.left = (int)(mX - mWidth / 2); mBounds.top = (int)(mY - mHeight / 2); mBounds.right = (int)(mX + mWidth / 2); mBounds.bottom = (int)(mY + mHeight / 2); return mBounds; } } And "draw" methods in GameView class: ----------GAME VIEW---------- private void drawSpaceship(Canvas canvas) { mSpaceship.draw(canvas, mSpaceship.mFaceAngle); } private void drawAsteroids(Canvas canvas) { GameEntity[] asteroids = mAsteroids; GameEntity asteroid; for(int i = 0; i < MAX_ASTEROIDS; i++) { asteroid = asteroids[i]; if(asteroid.mAlive) { asteroid.draw(canvas, asteroid.mMoveAngle); } } } private void drawBullets(Canvas canvas) { GameEntity[] bullets = mBullets; GameEntity bullet; for(int i = 0; i < MAX_BULLETS; i++) { bullet = bullets[i]; if(bullet.mAlive) { bullet.draw(canvas, bullet.mMoveAngle + 90); } } } This gives me an extra 4-5 FPS, and now I have ~25 FPS. It worth to mention, that I run my app on emulator, and currently have not tested it on real device. I decide to go little further with testing and commented out m.postTranslate() method call, and got +4 FPS, after that I commented out m.postRotate(), and got +12-15 FPS, it seems that rotation (with pivot points) is very costly... Best Regards, Andre
-- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en